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

时间:2015-10-22 12:27:09

标签: amazon-web-services aws-lambda aws-api-gateway

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

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

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

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

{
    "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":{}}

但是,当我向 WITH 主体发出请求时,模板映射不再有效:

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 个答案:

答案 0 :(得分:3)

映射模板通过请求的内容类型绑定到请求。在这种情况下,模板映射用于内容类型'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"}}