在 flask_restplus RequestParser 中添加多个 json 字段
Adding multiple json fields in flask_restplus RequestParser
我想要 expect
一个请求,其中 request.json 看起来像:
{
"app_name": "app",
"model_name": "model"
}
我创建了以下解析器:
parser = reqparse.RequestParser()
parser.add_argument('app_name', location='json', required=True)
parser.add_argument('model_name', location='json', required=True)
并且我将解析器用作:
class ModelList(Resource):
@api.expect(parser)
def get(self):
"""Get all matching model records"""
....
这在服务中显示为:
但是当我尝试这个时,我的请求翻译如下:
我希望请求看起来像:
curl -X GET "http://localhost:5000/model" -H "accept: application/json" -H "Content-Type: application/json" -d '{"app_name": "test","model_name": "affinity"}'
而不是:
curl -X GET "http://localhost:5000/model" -H "accept: application/json" -H "Content-Type: application/json" -d "affinity"
我做错了什么?
TypeError: HEAD or GET Request cannot have a body.
请参考这个 SO 问题,了解为什么它不能(不应该)有一个:
要修复,请删除 location='json'
或指定 location='args'
。
parser = reqparse.RequestParser()
parser.add_argument('app_name', required=True)
parser.add_argument('model_name', required=True)
parser = reqparse.RequestParser()
parser.add_argument('app_name', location='args', required=True)
parser.add_argument('model_name', location='args', required=True)
两者都会让 Swagger 知道发送查询字符串中的参数,并且解析器知道去那里查找。
我想要 expect
一个请求,其中 request.json 看起来像:
{
"app_name": "app",
"model_name": "model"
}
我创建了以下解析器:
parser = reqparse.RequestParser()
parser.add_argument('app_name', location='json', required=True)
parser.add_argument('model_name', location='json', required=True)
并且我将解析器用作:
class ModelList(Resource):
@api.expect(parser)
def get(self):
"""Get all matching model records"""
....
这在服务中显示为:
但是当我尝试这个时,我的请求翻译如下:
我希望请求看起来像:
curl -X GET "http://localhost:5000/model" -H "accept: application/json" -H "Content-Type: application/json" -d '{"app_name": "test","model_name": "affinity"}'
而不是:
curl -X GET "http://localhost:5000/model" -H "accept: application/json" -H "Content-Type: application/json" -d "affinity"
我做错了什么?
TypeError: HEAD or GET Request cannot have a body.
请参考这个 SO 问题,了解为什么它不能(不应该)有一个:
要修复,请删除 location='json'
或指定 location='args'
。
parser = reqparse.RequestParser()
parser.add_argument('app_name', required=True)
parser.add_argument('model_name', required=True)
parser = reqparse.RequestParser()
parser.add_argument('app_name', location='args', required=True)
parser.add_argument('model_name', location='args', required=True)
两者都会让 Swagger 知道发送查询字符串中的参数,并且解析器知道去那里查找。