Rails API通常喜欢这样的数组查询参数:
example.com?colors[]=cyan&colors[]=magenta&colors[]=yellow&colors[]=black
我如何将其映射到lambda函数?
答案 0 :(得分:8)
一个小小的试验和错误表明它是这样的:
example.com?colors=['cyan','magenta','yellow','black']
答案 1 :(得分:5)
根据https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html,您无法做的事情是重复的查询字符串参数密钥:
不支持重复的标头。
API Gateway将参数映射到JSON对象,因此只要每个项目都有自己唯一的密钥,就不会有任何破坏。
你的选择很好,但我还是集思广益。您可以在方括号中添加标记:
example.com?colors[0]=cyan&colors[1]=magenta&colors[2]=yellow&colors[3]=black
如果您愿意从GET交换到POST,可以在POST正文中发送查询字符串。然后您可以自己解析原始查询字符串。你甚至可以在这里重复使用param键,因为你正在解析它。
?colors=cyan&colors=magenta&colors=yellow&colors=black
另一个POST选项是在POST正文中发送JSON数组。我知道POST不像GET那样易于使用,但它是一种选择。
["cyan","magenta","yellow","black"]
答案 2 :(得分:3)
如@ kjs3中所述,API Gateway不支持查询字符串或标题中的重复参数。但是,您可以使用单参数数组格式。
支持重复的参数键+值是我们想要做的事情,但我目前没有ETA。
答案 3 :(得分:3)
API网关代理现在支持查询字符串中具有相同名称的多个参数。
它们通过multiValueQueryStringParameters
字典传递。
例如
GET /api/path/?param=value¶m=othervalue&something=thing
将生成以下请求:
{
"resource": "/{proxy+}",
"path": "/ap/path/",
"httpMethod": "GET",
"queryStringParameters": {
"param": "othervalue", # only the last value is kept here
"something": "thing"
},
"multiValueQueryStringParameters": {
"param": [
"value",
"othervalue"
],
"something": [
"thing"
]
},
"pathParameters": {
"proxy": "api/path"
},
# etc
}
请参见documentation。