use*_*546 5 python flask flask-restplus
在我的flask-restplus API中,我不仅要检查输入数据,如以下示例所示
resource_fields = api.model('Resource', {
'name': fields.String(default = 'string: name', required = True),
'state': fields.String(default = 'string: state'),
})
@api.route('/my-resource/<id>')
class MyResource(Resource):
@api.expect(resource_fields, validate=True)
def post(self):
...
Run Code Online (Sandbox Code Playgroud)
必须具有“名称”字段,并且可能具有“状态”字段,还必须检查是否没有其他字段(如果发生这种情况,则会引发错误)。还有其他装饰器吗?我可以通过自定义功能检查输入数据的正确性吗?
小智 5
不要对字段使用字典,而是尝试使用RequestParser (flask-restplus 接受此处记录的两者。这样,如果输入数据中存在任何未知字段,您可以调用parser.parse_args(strict=True)它将抛出异常。400 Bad Request
my_resource_parser = api.parser()
my_resource_parser.add_argument('name', type=str, default='string: name', required=True)
my_resource_parser.add_argument('state', type=str, default='string: state')
@api.route('/my-resource/<id>')
class MyResource(Resource):
def post(self):
args = my_resource_parser.parse_args(strict=True)
...
Run Code Online (Sandbox Code Playgroud)
有关如何将 request_parser 与您的资源一起使用的更多指导,请查看Flask-restplus 存储库中的ToDo 示例应用程序。
这是完成@shiv 的另一个答案。以下代码片段允许您将有效负载记录在 Flask Restplus 生成的 Swagger 文档中。取自有关expect装饰器的文档:
my_resource_parser = api.parser()
my_resource_parser.add_argument('name', type=str, default='string: name', required=True)
my_resource_parser.add_argument('state', type=str, default='string: state')
@api.route('/my-resource/<id>', endpoint='with-parser')
class MyResource(Resource):
@api.expect(my_resource_parser)
def post(self):
args = my_resource_parser.parse_args(strict=True)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |