amazon-web-services - API Gateway 配置以接收正确的 POST 正文为 JSON
问题描述
我正在努力让 Lambda + API 网关正常工作。
这是我的代码-
exports.handler = async (event) => {
console.log("EVENT -> ", event.body)
let buff = new Buffer(event.body, 'base64');
let text = buff.toString('UTF-8');
console.log("TEXT -> ",text)
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
我已经提到了这个答案,但是,我Integration Request
在 API Gateway 中看不到。
必须做什么才能获得正确的 JSON?我知道我可以使用 3rd 方 npm 库。但是,我更喜欢在 AWS 端进行一些修复。我只想使用event.body
应该返回 JSON 的。
解决方案
我会以我理解的方式重新解释你的问题。
1/ 您创建了一个连接到 API 网关的 Lambda 函数
2/ 您使用 API 网关向 Lambda 函数发送了一些数据
3/ API 网关用一些数据调用你的函数
4/ 您在 Lambda 函数中收到的数据既不会丢失也不会损坏。它以 Base64 编码格式在 Lambda 内部接收
5/您不想在 Lambda 中接收 Base64 编码的数据,您不想像以前那样进行解码步骤
let buff = new Buffer(event.body, 'base64');
let text = buff.toString('UTF-8');
如果是这种情况,您需要查看此 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-workflow.html
首先,检查您的请求发送的 Content-Type 标头。
然后,看看你发给 API 网关的数据是不是真的是文本数据
此外,转到您的 API Gateway -> Setting -> Binary Media Types 以查看 API 网关是否专门将任何数据类型视为二进制
推荐阅读
- python-3.x - 句子标记器检索跨度
- java - 将 JButton 添加到 JScrollPame
- wpf - 在 WPF 中结合文本换行和收缩
- c++ - 使用 FFmpeg API 的示例 C 代码中的问题
- ios - 如何防止移动 Chrome/Safari 中的对角滚动
- javascript - 匹配两个特殊字符之间的子字符串,不包括字符
- angular - 如何从 Angular 材质对话框中获取数据?
- api - 如何从 localhost 向 api 发出 fetch 请求?
- asp.net - 如何使用 WebApi 返回 IEnumerable 对象列表?
- reactjs - 按下按钮后无法清除输入字段