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

Amazon web services AWS API网关覆盖集成请求映射模板,amazon-web-services,aws-lambda,aws-api-gateway,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方法有一个集成请求映射模板(直接来自): 当我在没有尸体的情况下提出请求时,我会得到

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

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

exports.handler = function(event, context) {
    context.succeed({event: event});
};
这个名为echo的Lambda函数通过POST调用Lambda函数。POST方法有一个集成请求映射模板(直接来自):

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

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

非常感谢。所以很认真地
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"}}