我正在寻找这个问题的哈希等价物:如何将数组查询参数传递到AWS API网关?
基本上,我想设置如下所示的查询参数:example.com?color[background]=yellow&color[foreground]=black
当我尝试在API网关控制台中创建一个名为color[background]
的查询参数时,我得到以下错误消息:
Invalid mapping expression specified: Validation Result: warnings : [], errors : [Parameter name should be a non-empty alphanumeric string]
我还尝试设置了一个color
查询参数,然后将各种"哈希"传递给它
{"background" => 123, "foreground" => "abc"}
和删除空格{"background" : 123, "foreground" : "abc"}
与删除空格{background:123,foreground:abc}
它们都会产生一个请求,该请求是某种形式的example.com?color=%7Bbackground:123,foreground:abc%7D
,我传递的哈希在=
之后。
有什么想法吗?不管怎样,这对查询字符串参数来说是一种糟糕的做法吗?我应该坚持使用简单的params吗?
由于没有定义通过查询字符串传递复杂数据结构(如数组或映射)的标准,API网关不会尝试将查询字符串解释或解析为简单的键-值字符串对之外的任何内容。
如果您想传入和转换复杂类型,最好在POST或PUT请求的主体中进行,这样您就可以利用JSON和API网关强大的主体映射模板功能。
或者,如果您必须坚持使用查询字符串参数,那么您必须:
- 按照上面Michael-sqlbot的建议,将数据结构折叠为简单的键值对,或者
- 将原始查询字符串传递到后端lambda或http集成,在那里可以随心所欲地进行解析。有关如何做到这一点的更多详细信息,请参阅本文