pyt*_*lus 6 python aws-lambda aws-api-gateway serverless-framework serverless
我试图找出如何使用无服务器框架直接以 JSON 形式返回响应。这是 AWS 上具有 Lambda 代理集成的功能。全部默认设置。目标是从 python lambda 函数中,HTTP 响应客户端直接获取到 JSON 对象,而不是 JSON 的字符串序列化。
python 处理程序就像这个一样简单
def handle(event, context):
log.info("Hello Wold")
log.info(json.dumps(event, indent=2))
return {
"statusCode": 200,
"body": {"foo": "bar"},
"headers": {
"Content-Type": "application/json"
}
}
Run Code Online (Sandbox Code Playgroud)
该函数如下所示:
functions:
report:
handler: handler.handle
events:
- http:
path: api/mypath
method: post
authorizer: aws_iam
Run Code Online (Sandbox Code Playgroud)
通过这些配置,我在 Postman 中得到的响应 BODY 是:
{
"statusCode": 200,
"body": {
"foo": "bar"
},
"headers": {
"Content-Type": "application/json"
}
}
Run Code Online (Sandbox Code Playgroud)
所以这很奇怪,为什么我把所有东西都当作身体?如何正确配置它以便我只获得“真实”主体?
使用 json.dumps() 将 JSON 转换为字符串。
import json
def handle(event, context):
log.info("Hello Wold")
log.info(json.dumps(event, indent=2))
return {
"statusCode": 200,
"body": json.dumps({"foo": "bar"}),
"headers": {
"Content-Type": "application/json"
}
}
Run Code Online (Sandbox Code Playgroud)
使用 lambda 集成并避免使用 json.dumps()。但这会将你的输出转换为
{ foo = bar}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5336 次 |
| 最近记录: |