嗨下面是我的运行代码,可以通过以下URL访问:http://127.0.0.1:5000/api/documentation
from flask import Flask, Blueprint
from flask_restplus import Api, Resource, fields
app = Flask(__name__)
blueprint = Blueprint('api', __name__, url_prefix='/api')
api = Api(blueprint, doc='/documentation') #,doc=False
app.register_blueprint(blueprint)
app.config['SWAGGER_UI_JSONEDITOR'] = True
login_details = api.model('LoginModel',{'user_name' : fields.String('The Username.'),'pass_word' : fields.String('The password.'),})
# pass_word = api.model('Pwd', {'pass_word' : fields.String('The password.')})
credentials = []
python = {'user_name' : '1234','pwd':'23213413'}
credentials.append(python)
@api.route('/login')
class Language(Resource):
@api.marshal_with(login_details, envelope='the_data',mask='pass_word')
def get(self):
return credentials
@api.expect(login_details)
@api.marshal_with(login_details, envelope='the_data',mask='pass_word')
def post(self):
login_details = api.payload
print(login_details)
login_details['id'] = len(credentials) + 1
credentials.append(login_details)
return {'result' : 'credentials added'}, 201
if __name__ == '__main__':
app.run(debug=True)
当我进入swagger UI时,你能告诉我该如何用*****隐藏密码,并且值应该正确地传递给参数。
根据flask-restful documentation关于模型,你可以在开始时看到fields.Raw
类可以采取format
parameter:
它可以:
修改应如何呈现现有对象键的值
因此,您可以将此format
参数与值'password'
一起使用,如“String”部分下的Swagger documentation about data types中所述:
可选的格式修饰符用作字符串内容和格式的提示。 OpenAPI定义了以下内置字符串格式:
[...]
password - 提示屏蔽输入的UI
所以你可以在你的字段定义中使用这样的format='password'
:
pass_word = fields.String('The password.', format='password')
但问题是你正在使用expect
装饰器,标准的Model
定义,它不允许你轻松定制你的请求解析器。我建议使用Marshmallow来更好地控制对象序列化。