2015-09-10 30 views
7

我似乎無法弄清楚如何使用我的資源的集成請求中的映射模板創建可選的查詢字符串參數。AWS API網關:如何在映射模板中將查詢字符串參數設爲可選?

我的模板看起來是這樣的:

{ "limit": "$input.params('limit')", "post_date":"$input.params('post_date')" } 

我想 '限價' & 'POST_DATE' 是可選的。該模板創建一個查詢字符串,看起來像這樣在不提供這些參數:

/myresource?limit=undefined& 

當我想到的問題:

/myresource 

Docs似乎並沒有掩蓋這一點。我在文檔中找到了一些使用類bash語法來提供條件功能的示例模板。我試過以下測試,但它不會在AWS控制檯中驗證:

 #set($limit = $input.path('limit')) 
     { 
      #if($limit)"limit": "$input.params('limit')",#end 
     } 

我在正確的軌道上嗎?

謝謝!

+2

我想你應該定義所有可能的參數,然後在你的後臺處理'undefined'。 – kixorz

+0

你是否在使用'Lambda'作爲後端? – kixorz

+0

@napalm這就是我現在正在做的。真的AWS?這是跛腳。 Lambda - >是 – Nick

回答

3

是的,你絕對可以在Api Gateway中做到這一點;儘管它似乎沒有很好的記錄!

在你的問題中,你提到過這是一個參數;但是您使用了input.path,通常會引用POST請求正文中的一個元素。以下應該工作:

#set($limit = $input.params('limit')) 
{ 
#if($limit && $limit.length() != 0) 
"limit": "$input.params('limit')" 
#end 
} 

在文檔方面,我發現從AWS的以下頁面實際上是非常有用的。它藏在一個關於模擬終端部分,雖然:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-mock-integration.html

相關問題