使用 AWS API 网关和 Lambda 从 multipart/form-data 获取非文件正文
Get non file body from multipart/form-data using AWS API Gateway and Lambda
我正在尝试通过 API 网关将表单数据从 multipart/form-data
POST
获取到我的 ASW Lambda Web 服务。
HTTP POST
具有内容类型 "multipart/form-data" 和 URL 编码的正文。文件数据也在此 post 中发送(因此我猜是多部分)。
Web 服务需要与第三方服务集成,因此更改 POST
的格式并不是一个真正的选择。
我看到这个 thread 谈论将 URL 编码数据转换为 JSON 对象以便在 Lambda 中使用,但这并不能解决问题。
我还尝试将内容类型 multipart/form-data
的 集成请求 -> 映射模板 设置为 输入直通。这也没有帮助。
我确实遇到了另一个 关于使用 multipart/form-data
上传文件的问题,但由于我对文件不感兴趣,只对正文感兴趣,所以这个答案没有帮助。
下面是通过运行范围捕获的 post 的屏幕截图(抱歉)。
如果目标是使用 Lambda,您需要将有效的 JSON 传递给函数。目前没有办法 JSON-ify 内部 Api 网关中作为非 JSON 数据出现的数据。
我们的短期解决方案(在我们的积压工作中)是在映射模板中提供一个变量来获取请求的原始输入。这样你就可以使用如下模板进行简单的 JSON 转换:
{
"body" : "$input.body"
}
或类似的东西。
查看映射模板参考以获取更多信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
编辑 4/7 - 功能已发布为 $input.body
我正在尝试通过 API 网关将表单数据从 multipart/form-data
POST
获取到我的 ASW Lambda Web 服务。
HTTP POST
具有内容类型 "multipart/form-data" 和 URL 编码的正文。文件数据也在此 post 中发送(因此我猜是多部分)。
Web 服务需要与第三方服务集成,因此更改 POST
的格式并不是一个真正的选择。
我看到这个 thread 谈论将 URL 编码数据转换为 JSON 对象以便在 Lambda 中使用,但这并不能解决问题。
我还尝试将内容类型 multipart/form-data
的 集成请求 -> 映射模板 设置为 输入直通。这也没有帮助。
我确实遇到了另一个 multipart/form-data
上传文件的问题,但由于我对文件不感兴趣,只对正文感兴趣,所以这个答案没有帮助。
下面是通过运行范围捕获的 post 的屏幕截图(抱歉)。
如果目标是使用 Lambda,您需要将有效的 JSON 传递给函数。目前没有办法 JSON-ify 内部 Api 网关中作为非 JSON 数据出现的数据。
我们的短期解决方案(在我们的积压工作中)是在映射模板中提供一个变量来获取请求的原始输入。这样你就可以使用如下模板进行简单的 JSON 转换:
{
"body" : "$input.body"
}
或类似的东西。
查看映射模板参考以获取更多信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
编辑 4/7 - 功能已发布为 $input.body