flask_restplus中的bundle_errors未返回缺少参数的错误

时间:2017-06-14 12:05:00

标签: python flask-restplus

我使用flask-restplus实现了一个非常简单的API,但是当我尝试将bundle_errors=Truereqparse一起使用时,我遇到了一个问题。 对于以下代码

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

0 个答案:

没有答案