【发布时间】:2021-07-03 17:17:20
【问题描述】:
我有一个 Lambda 函数,直接执行时效果很好。由于目前只是为了测试,它只读取请求body并返回其中一个孩子的值作为响应:
exports.handler = async (event) => {
const response = {
"isBase64Encoded": false,
"headers": {
"Content-Type": "application/json"
},
"statusCode": 200,
"body": event.body.maxNumber
};
return response;
};
但是,当我使用 AWS Api 网关从中创建 Api 时,会发生奇怪的行为。如果 Lambda 函数包含上述代码,则响应正文为空。但是,如果我将响应更改为返回整个请求正文,而不是孩子(在这种情况下为 maxNumber),它确实会返回它。
无论如何,虽然 lambda 函数在孤立的情况下可以正常工作,但在 API 网关后面时,它似乎看不到请求正文的子项。
我已经创建了 HTTP 和 REST api,无论是否启用了代理,但没有运气。也找不到任何专门采样我的案例(请求正文)的文档。 任何帮助将不胜感激。
【问题讨论】:
-
如果您使用 REST Api 和 Proxy,我们需要先解析它
JSON.parse(event.body),因为输入正文将作为字符串发送到 lambda。然后访问它的属性。 -
已经试过了。不是这样的:(
-
为您的 api 网关启用 lambda-proxy,然后通过
JSON.parse(event.body)获取正文 -
我想类似的问题已经在这里回答了:stackoverflow.com/questions/41648467/…
标签: node.js amazon-web-services aws-lambda httprequest aws-api-gateway