2015-10-22 67 views
2

看來,當我通過POST請求發送正文時,我的模板映射正被有效負載覆蓋。AWS API網關覆蓋集成請求映射模板

我有一個調用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"} 

如何確保我的模板映射適用於請求中存在正文的情況?

回答

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

謝謝。所以。許多。認真。 –