python - 在 flask_restplus RequestParser 中添加多个 json 字段
问题描述
我想要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 或 GET 请求不能有正文。
请参阅此 SO 问题,了解为什么它不能(不应该)有一个:HTTP GET with request body
要修复,请删除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 知道在查询字符串中发送参数,并且解析器知道去那里查看。
推荐阅读
- spring-cloud-sleuth - 侦探不适用于 websocket 客户端
- powershell - 具有关系值的 PSObject - 一对多
- sql - 我有疑问我想知道哪个脚本更快,是否有任何逻辑
- java - 多线程中的休眠@GeneratedValue序列
- python - 开始、退出、重试按钮
- python - 简单的 Pyspark UDF 使用 razorvine_pickle 出现 numpy 错误
- javascript - 单击时关注父元素不可用
- html - 将导航栏品牌与页面对齐
- git - git diff 发布标签和提交ID
- r - 为只有 2 个因子水平的向量获取多个总和