看来,当我发送一个带有POST请求的正文时,我的模板映射会被有效负载覆盖 .
我有一个API网关资源调用Lambda函数 . 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":{}}
但是,当我使用正文发出请求时,模板映射不再起作用:
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 回答
映射模板通过请求的内容类型绑定到请求 . 在这种情况下,模板映射用于内容类型'application/json' . 通过在请求中包含
Content-Type: application/json
标头,将应用映射模板 .这将返回预期结果: