![](/img/trans.png)
[英]How to send a html email in AWS Lambda node js returning a well formed response for AWS api gateway
[英]Lambda isn't returning the body with an http response to API Gateway
当我使用http js模块执行一个非常简单的查询时,仅在Lambda上响应就很好显示,但是当我通过API Gateway调用该函数时,即使将结果放在响应主体上,主体也将返回空。
response = {
"statusCode": 200,
"body": JSON.stringify(results),
"isBase64Encoded": false
};
callback(null, response, connection.end());
由此我得到:
{
"statusCode": 200,
"body": "[]",
"isBase64Encoded": false
}
在API网关上,但显示为
{
"statusCode": 200,
"body": "[{\"id\":15,\"username\":\"3FWF34fWF\",\"password\":\"sha1$02f44ad2$1$c81a28b3217a4fb777850e85dbdfa088ab44266d\",\"email\":\"3514t34fg\",\"activated\":0,\"name\":\"fEEFEFAE4\"}]",
"isBase64Encoded": false
}
当我在lambda上测试代码时。
任何帮助都将是惊人的。 我可以随时提供更多信息。
我设法解决了这个问题,问题是lambda函数无法读取我正确传递的标头。 切记,您可以使用event.headers访问lambda中的事件标头。
如果遇到此问题,请通过返回整个事件作为响应而不是返回实际结果,来仔细检查您在lambda上收到的事件,例如:
response = {
"statusCode": 200,
"body": JSON.stringify(event),
"isBase64Encoded": false
};
callback(null, response, connection.end());
我有类似的问题。 我用python代替。
body = {
"statusCode": 200,
"isBase64Encoded": False,
"headers": {'Content-Type': 'application/json'},
# "body": {"recc":response}
"body": response
}
在lambda中的响应是:
"{\"55b7badc-75af-41c0-9877-af308264cb33\": \"0.4666666666666667\", \"4694e172-322e-4a51-930e-d3b9bfd3c2e6\": \"0.36363636363636365\", \"c5447cc5-936d-4aa6-97c4-3f51a7e7c283\": \"0.3\", \"6abf0893-5d32-4a43-942f-aaef4395d91d\": \"0.2727272727272727\", \"c0bf1214-fb41-48eb-b07d-f81b71ba0061\": \"0.25\"}"
这对于api网关是正确的,我不知何故得到了:
{
"statusCode": 200,
"isBase64Encoded": false,
"headers": {
"Content-Type": "application/json"
},
"body": "{}"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.