python - 使用 Chalice 时无法访问请求 json_body
问题描述
我正在尝试向使用 AWS 包 Chalice 的 python api 发出 curl 请求。
当我尝试访问app.current_request.json_body
JSON Parse 时抛出错误。无法弄清楚为什么会这样。据我所知,我的 JSON 格式正确。
这是卷曲请求:
(echo -n '{"data": "test"}') |
curl -H "Content-Type: application/json" -d @- $URL
这是python圣杯代码:
app = Chalice(app_name='predictor')
@app.route('/', methods=['POST'], content_types=['application/json'])
def index():
try:
body = app.current_request.json_body
except Exception as e:
return {'error': str(e)}
当我使用上述curl
请求调用路由时,出现以下错误:
{"error": "BadRequestError: Error Parsing JSON"}
注意:当我.json_body
从app.current_request
. 我不再得到错误。
有什么想法吗?
解决方案
该文档确实表明问题出在 Content-Type 上:
视图函数的默认行为支持 application/json 的请求体。
Content-Type
当使用application/json发出请求时,app.current_request.json_body
会自动为您设置该属性。此值是已解析的 JSON 正文。您还可以配置视图功能以支持其他内容类型。您可以通过为您的 app.route 函数指定 content_types 参数值来做到这一点。此参数是可接受的内容类型的列表。
它表明更改 Content-Type 可能会使 json_body 工作,但我没有成功。
但是使用app.current_request.raw_body.decode()
而不是app.current_request.json_body
解决问题。
推荐阅读
- r - Rstudio:如何用字符串类型值替换 NA 值?
- python - 我的硬件是否足以训练对象检测模型?
- javascript - 调整Bootstrap 网站上的 -height 到 window-height
- sql-server - 如何从 Oracle 源过滤 SSIS
- javascript - 如何从猫鼬查找中排除一组对象?
- google-chrome - 安装后在heroku中找不到chromedriver
- javascript - 如何在 1 个函数中使用 promise.all 进行 2 个查询?
- android - ViewHolder 中的 FragmentContainerView - 哪个是合适的 FragmentManager?
- javascript - 如何使用 Chrome webRequest 重新创建 POST 请求
- android - 改造第一次调用会冻结 UI