在我的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):
        ...

必须具有“名称”字段,并且可能具有“状态”字段,还必须检查是否没有其他字段(如果发生这种情况,则会引发错误)。
还有其他装饰器吗?我可以通过自定义功能检查输入数据的正确性吗?

最佳答案

而不是为字段使用字典,请尝试使用RequestParser(flask-restplus接受两者都作为已记录的here。这样,您可以调用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)
        ...

有关如何对资源使用request_parser的更多指导,请查看flask-restplus存储库中的ToDo example app

10-08 02:40