我使用flask-restplus实现了一个非常简单的API,但是当我尝试将bundle_errors=True
与reqparse
一起使用时,我遇到了一个问题。
对于以下代码
from flask import Flask
from flask_restplus import Api, Resource, reqparse
app = Flask(__name__)
api = Api(app)
parser = reqparse.RequestParser(bundle_errors=False)
parser.add_argument('username', type=list, required=True, help="Missing Username", location="json")
parser.add_argument('password', type=list, required=True, help="Missing Password", location="json")
@api.route('/user')
class User(Resource):
def post(self):
args = parser.parse_args()
return {"ID":"1", "Username": args['username'], "Password": args['password']}, 201
if __name__ == '__main__':
app.run(host="0.0.0.0", debug=True)
1-当 bundle_errors=False
时,我发送了缺少参数的请求
curl -X POST \
http://localhost:5051/user
-H 'content-type: application/json'
-d '{}'
我得到以下回复
{
"errors": {
"username": "Missing Username"
},
"message": "Input payload validation failed"
}
除了只显示一个缺失字段外,哪个很好。
2-当我使用 bundle_errors=True
时(如文档中所述),我得到以下结果
{
"Username": "Missing required parameter in the JSON body",
"Password": "Missing required parameter in the JSON body",
"ID": "1"
}
这意味着RequestParser没有抛出任何错误并返回此字符串"在JSON正文中缺少必需的参数"作为实际输入
我做错了吗?
我使用的是python版本3.5.2和flask-restplus == 0.10.1