POST
许多服务可以在发出请求时接受 URL 中的查询字符串参数Content-Type: application/x-www-form-urlencoded
以及正文中的其他参数,但似乎 AWS API Gateway 不能同时接受查询字符串参数。
当我使用POST
映射模板调用 AWS API Gatewayapplication/x-www-form-urlencoded
并查询字符串 URL 参数(使用 Lambda 函数)时,我收到以下错误:
{
"message":"When Content-Type:application/x-www-form-urlencoded,
URL cannot include query-string parameters (after '?'):
'/prod/webhook?inputType=wootric&outputType=glip&url=...'"
}
这是一个示例 cURL:
curl -XPOST 'https://{myid}.execute-api.{myregion}.amazonaws.com/prod/webhook? \
inputType=wootric&outputType=glip&url=https://hooks.glip.com/webhook/ \
11112222-3333-4444-5555-666677778888' \
-d "@docs/handlers/wootric/event-example_response-created.txt" \
-H 'Content-Type: application/x-www-form-urlencoded' -v
具体目标是使用带有查询字符串参数的 URL 将 Wootric webhook 事件发布到 Lambda 函数。
您可以在此处获取代码:
https://github.com/grokify/chathooks
Wootric 事件正文文件在这里:
GitHub问题在这里:
https://github.com/grokify/chathooks/issues/15
错误消息似乎很明确,但我想问:
- 是否有解决方法来配置 API 网关以支持两者?
- AWS 不支持这一点是否有基于标准的原因,或者这只是一个设计决策/限制?
如果没有解决方案,除了部署像 Heroku 这样的托管服务器解决方案之外,是否还有一个很好的轻量级解决方案。此外,其他云服务是否通过其 API 网关 + 云功能支持此功能,例如 Google?
显示对两者的支持的一些示例: