2016-04-30 77 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