html - Amazon Lambdas HTML 发布表单提交

标签 html forms aws-lambda

我想发布到 AWS API 网关。我希望将我的 URL 查询字符串传递到 Amazon Lambda。

在 API 网关配置中,我在方法请求中指定了一个参数作为 URL 查询字符串参数,q4_englishName_first_。在集成请求中,我指定了 Content-Type "application/json" 映射。它看起来像这样:

{
    "first" : "$input.params('q4_englishName_first_')"
}

我的 lambda 有一个请求类,其中 "first" 作为字符串、getter 和 setter...

当我从 API Gateway 控制台进行测试时,我可以为 "q4_englishName_first_" 指定一个值 - 它有一个文本输入区域供我执行此操作 - 然后我保留请求正文框空白的。当我在API网关中点击测试时,结果是成功。就我而言,我会收到一封电子邮件,其中包含我在查询字符串输入区域中输入的值。

令人抓狂的是,我没有以任何其他方式取得成功。我想使用标准 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>

但是当我点击提交时,我得到了这个:

{"message": "Unsupported Media Type"}

这让我认为 API 网关不需要 Content-Type “application/x-www-form-urlencoded” 的 POST。我想相信我是对的,因为当我使用 Apache httpclient 编写一个 Java 程序来执行 POST 时, Content-type "application/json" 经过...

但我想从 URL 表单进行 POST,并且不想等待表单支持 JSON 编码。我是否必须使用 javascript 将表单参数转换为 JSON(如何?)或者是否有某种方法可以使 AWS API 网关接受我的 url 编码参数?

我错过了什么?

最佳答案

最简单的方法是在 API Gateway 中的资源上创建 ANY 方法,并将其设置为使用 Lambda 代理集成。然后请求中的所有内容都会传递给 Lambda 函数(包括请求参数和正文)。

关于html - Amazon Lambdas HTML 发布表单提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40121351/

相关文章:

html - 格式化 CSS 表格和表单

javascript - 检查特定输入后如何使标签更改属性?

Django 表单和 i18n

javascript - 从加载 jQuery 的表单中检索数据并将其传递到父页面

html - div的CSS样式

php - css样式和对齐问题

javascript - 在模糊上用一类提交多个表单(jquery、rails)

json - 无法获取 Amazon S3 文件的内容并使用 python 和 boto3 编辑该文件

aws-lambda - 如何从 lambda 触发器将消息返回给 SQS

amazon-web-services - Lambda 的 AWS 自定义域名