表单 – 使用AWS API Gateway和Lambda从multipart / form-data获取非文件正文

我试图通过API网关将表单数据从multipart / form-data POST获取到我的ASW Lambda Web服务.

HTTP POST具有Content-Type“multipart / form-data”和URL编码的主体.文件数据也在这文章中发送(因此我认为是多部分).

Web服务需要与第三方服务集成,因此更改POST的格式实际上不是一种选择.

我已经看到这个thread谈论将URL编码数据转换为JSON对象以便在Lambda中使用,但这并不能解决问题.

我也尝试过设置集成请求 – >将内容类型multipart / form-data的模板映射到Input passthrough.这也没有帮助.

我确实遇到了另一个关于使用multipart / form-data上传文件question,但由于我对文件不感兴趣,只是正文,这个答案没有帮助.

下面通过runco​​pe找到捕获的帖子的截图(对不起).

解决方法

如果目标是使用Lambda,则需要将有效的JSON传递给函数.目前,Api Gateway内部的JSON-ify数据无法以非JSON数据的形式出现.

我们的短期修复(在我们的待办事项上)是在映射模板中提供一个变量来获取请求的原始输入.这样你就可以使用如下模板进行简单的JSON转换:

{
    "body" : "$input.body"
}

或类似的东西.

查看映射模板参考以获取更多信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

编辑4/7 – 功能已作为$input.body发布

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些