Python 使用Chalice时无法访问请求json_正文

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

我正试图向使用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 = 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
被定义为发送的负载。