编辑:reqparse 不再是使用 flask-restful 执行此操作的推荐方式!,但下面还有另一个使用棉花糖的示例。
reqparse 对象已弃用。请参阅docs 或本文中的第二个示例以了解替代方案。
使用reqparse。您可以在 flask-restful docs 中看到另一个示例。
对参数进行验证,不需要jsonify。
from flask import Flask
from flask_restful import Resource, Api, reqparse
app = Flask(__name__)
api = Api(app)
class BarAPI(Resource):
def get(self):
parser = reqparse.RequestParser()
parser.add_argument('key1', type=str)
parser.add_argument('key2', type=str)
return parser.parse_args()
api.add_resource(BarAPI, '/bar', endpoint='bar')
if __name__ == '__main__':
app.run(debug=True)
另一种方法是使用marshmallow。
您可以使用Schema 类来验证request.args(对于PUT/POST 请求,您可以验证request.form)
from flask import Flask, request, abort
from flask_restful import Resource, Api
from marshmallow import Schema, fields
class BarQuerySchema(Schema):
key1 = fields.Str(required=True)
key2 = fields.Str(required=True)
app = Flask(__name__)
api = Api(app)
schema = BarQuerySchema()
class BarAPI(Resource):
def get(self):
errors = schema.validate(request.args)
if errors:
abort(400, str(errors))
return 'ok'
api.add_resource(BarAPI, '/bar', endpoint='bar')
# omit of you intend to use `flask run` command
if __name__ == '__main__':
app.run(debug=True)
此示例要求两个参数都存在。