当前位置: 首页 > 知识库问答 >
问题:

AWS API网关覆盖集成请求映射模板

董良策
2023-03-14

当我发送一个带有POST请求的正文时,我的模板映射似乎被有效负载覆盖了。

我有一个调用Lambda函数的API网关资源。Lambda函数很简单,它只是回显它接收到的内容。

exports.handler = function(event, context) {
    context.succeed({event: event});
};

这个名为echo的Lambda函数通过POST调用Lambda函数。POST方法有一个集成请求映射模板(直接来自文档):

{
    "name" : "$input.params('name')",
    "body" : $input.json('$')
}

当我在没有尸体的情况下提出请求时,我会得到我期望的答复:

curl -XPOST https://foo.execute-api.us-east-1.amazonaws.com/test/echo?name=foo

{"event":{"name":"foo","body":{}}

但是,当我用主体发出请求时,模板映射不再工作:

curl -XPOST https://foo.execute-api.us-east-1.amazonaws.com/test/echo?name=foo -d '{"text": "Say goodbye to your template mapping"}'

{"event":{"text":"Say goodbye to your template mapping"}

当请求中存在正文时,如何确保模板映射适用?

共有1个答案

宗政霄
2023-03-14

映射模板通过请求的内容类型绑定到请求。在这种情况下,模板映射是针对内容类型“应用/json”的。通过在请求中包含Content-Type: Application/json标头,可以应用映射模板。

这将返回预期结果:

curl -XPOST https://qb9p3d1ovf.execute-api.us-east-1.amazonaws.com/test/echo?name=foo -H "Content-Type: application/json" -d '{"text": "Say goodbye to your template mapping"}'

{"event":{"name":"foo","body":{"text":"Say HELLO to your template mapping"}}
 类似资料:
  • 我有一个Spring启动应用程序与GET方法如下。此方法的输入参数为String,它与路径变量{userId}映射。 我创建了AWS lambda函数并上传了我的Spring BootJAR。在传递字符串示例“userId1”后,我能够使用测试事件测试lambda函数。Lambda函数运行良好。 使用API网关,创建API,定义资源和GET方法。URL如下所示: 此外,遵循以下步骤来定义映射模板。

  • 问题内容: 我有一个抽象的MappedSuperClass,参与者,并通过三种“参与者”进行了扩展。然后,每个人都使用自己的“项目”,也使用抽象的MappedSuperClass。但是,我希望基类了解Projects,以便编写通用代码与参与者进行交互。如何使用Hibernate批注指定此内容?以及如何在ExtendedParticipant和ExtendedProject类中覆盖它? 每个参与者类

  • 我有一个API阶段没有使用“Lambda代理集成”,它有一个Lambda函数传递一个错误。 在映射模板中,我有以下内容: 有可能做我想做的事吗?我找不到$util.parsejson(即stringify)的反向。 谢谢!

  • 我正在尝试使用 AWS API 网关 Swagger 将请求路由到我的快速后端。我不知道如何自动设置集成请求,因为 Swagger 文件没有详细信息。 在将我的方法请求设置为集成类型上的GET/VPC链接时,我也很难使用endpointurl参数 例如: 我的api网关路径是 /info/car/{model}/聚合 现在endpointurl是http://carapi.com/info/car

  • 我们正在尝试从C#Windows服务调用AWS API网关来执行后台作业。哪个应该触发API网关定期初始化请求? 我们使用RestSharp调用APIendpoint,该类称为AwsAuthenticator,它继承自RestSharp.Authenticators.IAAuthenticator。但当我们调用API Gateway时,收到的错误是“我们计算的请求签名与您提供的签名不匹配。请检查您

  • Web 容器需要本章描述的映射技术去映射客户端请求到 Servlet(该规范2.5以前的版本,使用这些映射技术是作为一个建议而不是要求,允许servlet 容器各有其不同的策略用于映射客户端请求到 servlet)。