2017-09-25 60 views
0

我想在發送給lambda之前將請求主體和查詢字符串參數結合起來。比方說,我在拉姆達實體如下:Aws Api網關集成請求如何將屬性附加到請求正文?

Class Person { 
private String firstName; 
private String lastName; 
private String language; 
} 

和發送到API網關的JSON是{"firstName":"Foo","lastName":"Bar"} 正如你看到的「語言」在請求主體缺少。我想從查詢字符串中獲取這個語言字段並添加到json。 我該如何達到目標?

有沒有辦法在集成請求節? 例如:

$input.json(x).append("language":"$input.params('name')") 

我找不到任何有價值的信息。 在此先感謝。

回答

2

您可以在集成請求部分使用正文映射模板並獲取請求正文和查詢字符串。在身體映射模板中構建新的JSON,該模板將具有來自請求正文和查詢字符串的數據。當我們添加body map模板時,您的業務邏輯將獲得我們在body map模板中構建的JSON。

體內映射模板獲得查詢字符串,請做,

$input.params('querystringkey') 

例如身體映射模板內,

#set($inputRoot = $input.path('$')) 
{ 
"firstName" : "$input.path('$.firstName')", 
"lastName" : "$input.path('$.lastName')" 
"language" : "$input.params('$.language')" 
} 

請閱讀https://aws.amazon.com/blogs/compute/tag/mapping-templates/對身體映射模板

+0

我更多的細節不想構建新的json,因爲如果我這樣做,我必須更改Lambda中的實體。謝謝。 –

+0

您可以將完整的實體添加到正文映射模板中,而無需更改實體結構。或者你很樂意直接在代碼中獲取查詢字符串?我已經改變了我的答案了一下。 –