我想发布到AWS API Gateway。我希望我的URL查询字符串传递给Amazon Lambda。
在API Gateway配置中,我在方法请求中指定了一个参数作为URL查询字符串参数q4_englishName_first_。在集成请求中,我指定了一个Content-Type "application/json"映射。它看起来是这样的:
{
"first" : "$input.params('q4_englishName_first_')"
}我的lambda有一个以"first"作为字符串的请求类,getters和setters...
当我从API Gateway控制台进行测试时,我可以为"q4_englishName_first_"指定一个值--它有一个文本输入区域供我执行此操作--我将request body框保留为空。当我在API Gateway中单击Test时,结果是成功。在我的示例中,系统会向我发送一封电子邮件,其中包含我在查询字符串输入区域中键入的值。
令人抓狂的是,我在其他任何方面都没有成功。我想使用一个标准的HTML表单提交来传递这个值:
<form action="https://foo-api.us-west-2.amazonaws.com/beta" method="post">
<input type="text" name="q4_englishName_first_"/>
<input type="submit"/>
</form>但是当我单击submit时,我得到的结果如下:
{"message": "Unsupported Media Type"}这让我觉得API Gateway并不期望一个内容类型为"application/x-www-form-urlencoded"的POST。我愿意相信我是对的,因为当我使用Apache httpclient编写Java程序来完成POST时,Content-type "application/json"通过...
但是我想从URL表单进行POST,我不想等待表单支持JSON编码。我是否必须使用javascript将表单参数转换为JSON (如何转换?)或者有什么方法可以让AWS API网关接受我的url编码参数?
我遗漏了什么?
发布于 2016-11-02 19:51:48
最简单的方法是在API Gateway中的资源上创建一个ANY方法,并将其设置为使用Lambda代理集成。然后,请求中的所有内容都被传递给Lambda函数(包括请求参数和主体)。
https://stackoverflow.com/questions/40121351
复制相似问题