Python 使用Chalice时无法访问请求json_正文
我正试图向使用AWS包Chalice的python api发出一个curl请求 当我尝试访问Python 使用Chalice时无法访问请求json_正文,python,json,amazon-web-services,parsing,chalice,Python,Json,Amazon Web Services,Parsing,Chalice,我正试图向使用AWS包Chalice的python api发出一个curl请求 当我尝试访问app.current_request.json_body时,会抛出一个json解析错误。无法理解为什么会发生这种情况。据我所知,我的JSON格式正确 以下是curl请求: (echo -n '{"data": "test"}') | curl -H "Content-Type: application/json" -d @- $URL 以下是python Chalice代码: app = Chal
app.current_request.json_body
时,会抛出一个json解析错误。无法理解为什么会发生这种情况。据我所知,我的JSON格式正确
以下是curl请求:
(echo -n '{"data": "test"}') |
curl -H "Content-Type: application/json" -d @- $URL
以下是python Chalice代码:
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:解析JSON时出错”}
注意:当我从
app.current\u请求
中删除.json\u正文
时。我不再得到错误
有什么想法吗?确实表明问题在于内容类型:
视图函数的默认行为支持application/json请求体。当使用application/json的内容类型发出请求时,会自动为您设置app.current\u request.json\u body
属性。此值是已解析的JSON正文
您还可以配置查看功能以支持其他内容类型。您可以通过为app.route函数指定content_types参数值来完成此操作。此参数是可接受内容类型的列表
这表明更改内容类型可能会使json_body工作,但我没有成功
但是,使用app.current\u request.raw\u body.decode()
而不是app.current\u request.json\u body
解决了这个问题。我不使用chalice
,但实际使用的是app.current\u request
?它是一个必须调用方法才能获得有用见解的对象,还是它本身类似于JSON?app。当前的请求
有很多请求属性,您可以从中读取,例如.method
。他们在文档中提到的关于json_body
的唯一内容是:“json_body:解析的json body(json.loads(raw_body))。如果内容类型头是application/json,这是chalice中的默认内容类型值,则该值将仅为非None。”chalice是一个class.Huh。如果删除try/except
,是否可以从回溯中收集到任何信息?我熟悉Flask,但不熟悉Chalice。curl请求格式肯定有问题,因为当我使用此语法-d'{“data”:“TEST”}
发出请求时,.json_body
被定义为发送的负载。