无服务器框架Python lambda直接返回JSON
我试图找出如何使用无服务器框架直接以JSON形式返回响应。 这是AWS上带有Lambda代理集成的函数。所有默认设置。 目标是从python lambda函数中,HTTP响应客户端直接获取一个JSON对象,而不是JSON的字符串序列化 python处理程序与此一样简单无服务器框架Python lambda直接返回JSON,python,aws-lambda,aws-api-gateway,serverless-framework,serverless,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))
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中得到的响应主体是:
{
"statusCode": 200,
"body": {
"foo": "bar"
},
"headers": {
"Content-Type": "application/json"
}
}
这很奇怪,为什么我把所有的东西都当成身体?如何正确配置它,以便只获取“真实”的主体?在使用API网关时,主体需要字符串化 pythonish的
pythonish
方法是将JSON主体传递到JSON.dumps
函数中
def句柄(事件、上下文):
log.info(“你好,世界”)
log.info(json.dumps(事件,缩进=2))
返回{
“状态代码”:200,
“body”:json.dumps({“foo”:“bar”}),
“标题”:{
“内容类型”:“应用程序/json”
}
}
approach#1
使用json.dumps()将json转换为字符串
导入json
def句柄(事件、上下文):
log.info(“你好,世界”)
log.info(json.dumps(事件,缩进=2))
返回{
“状态代码”:200,
“body”:json.dumps({“foo”:“bar”}),
“标题”:{
“内容类型”:“应用程序/json”
}
}
进近#2
使用lambda集成并避免json.dumps()。但这会将您的输出转换为
{ foo = bar}