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



当我发送一个POST请求的主体时,我的模板映射被有效负载覆盖。

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

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

这个Lambda函数叫做echo,它通过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"}

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

映射模板根据请求的内容类型绑定到请求。在这个例子中,模板映射的内容类型是"application/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"}}

相关内容

  • 没有找到相关文章

最新更新