2016-04-30 116 views
1

我在尋找哈希相當於這個問題的:How to pass array query params to AWS API Gateway?如何將哈希查詢參數傳遞給AWS API網關?

基本上,我想成立看起來像這樣的查詢參數: example.com?color[background]=yellow&color[foreground]=black

當我試圖創建一個名爲color[background]中的查詢參數API網關控制檯,我收到以下錯誤信息: Invalid mapping expression specified: Validation Result: warnings : [], errors : [Parameter name should be a non-empty alphanumeric string]

我還試圖建立一個color查詢參數,然後通過各種「哈希」來了。以下是我已經試過傳遞到這個參數:

  1. {"background" => 123, "foreground" => "abc"}和刪除的空間
  2. {"background" : 123, "foreground" : "abc"}和刪除的空間
  3. {background:123,foreground:abc}

他們都導致請求是某種形式的example.com?color=%7Bbackground:123,foreground:abc%7D與散列,我通過後=來。

任何想法?這對於查詢字符串參數來說是不好的做法,我應該堅持簡單的參數嗎?

+1

你可以傳遞一個哈希,但你不能指望API網關明白你的意思是什麼......它只是一個字符串值在這一點......但......它是否支持點名字呢?如果我只是爲沒有特定平臺的API設計API,我傾向於使用'?color.background = yellow&color.background = black'作爲可讀性,但根據它們使用該術語的鬆散程度可能不是「字母數字」 。 –

+0

@ Michael-sqlbot - 謝謝!我要去做這樣的事情。 – readyornot

回答

1

由於沒有定義標準來通過查詢字符串傳遞像數組或映射這樣的複雜數據結構,因此API網關不會嘗試將查詢字符串解釋爲或解析爲除簡單鍵 - 值字符串對。

如果您想要傳入並轉換複雜類型,最好在POST或PUT請求的主體中這樣做,您可以利用JSON和API網關的功能強大的body mapping templates feature

另外,如果你必須使用查詢字符串參數棒,那麼你就必須:

  1. 收起你的數據結構是簡單的鍵值對由邁克爾-sqlbot上述建議,或
  2. 的直通原始查詢字符串到您的後端lambda或http集成,可以根據您的需要進行解析。有關如何執行此操作的更多詳細信息,請參閱this post
+0

有道理。我可以調整我的後端來處理這個問題。謝謝! – readyornot