编辑:reqparse
不再是使用flask-restful的推荐方法!但是下面有另一个使用marshmallow的例子。
reqparse
对象已过时。请参阅文档或此文章中的第二个示例以获取其他替代方案。
使用reqparse
。在flask-restful 文档中还可以看到另一个示例。
它对参数执行验证并且不需要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')
if __name__ == '__main__':
app.run(debug=True)
这个例子要求两个参数都必须存在。