我试图找出如何使用无服务器框架直接以 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"
}
}
该函数如下所示:
functions:
report:
handler: handler.handle
events:
- http:
path: api/mypath
method: post
authorizer: aws_iam
通过这些配置,我在 Postman 中得到的响应 BODY 是:
{
"statusCode": 200,
"body": {
"foo": "bar"
},
"headers": {
"Content-Type": "application/json"
}
}
所以这很奇怪,为什么我把所有东西都当作身体?如何正确配置它以便我只获得“真实”主体?
方法#1
使用 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"
}
}
方法#2
使用 lambda 集成并避免使用 json.dumps()。但这会将你的输出转换为
{ foo = bar}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)