Rails API通常喜欢这样的数组查询参数:
example.com?colors[]=cyan&colors[]=magenta&colors[]=yellow&colors[]=black
我如何将其映射到lambda函数?
一个小小的试验和错误表明它是这样的:
example.com?colors=['cyan','magenta','yellow','black']
根据https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-known-issues.html,您不能做的一件事是重复的查询字符串参数密钥:
不支持重复的标头.
API网关将参数映射到JSON对象,因此只要每个项目都有自己唯一的密钥,就不会有任何破坏.
你的选择很好,但我集思广益了其他一些选择.你可以做一些事情,比如在方括号中添加标记:
example.com?colors[0]=cyan&colors[1]=magenta&colors[2]=yellow&colors[3]=black
Run Code Online (Sandbox Code Playgroud)
如果您愿意从GET交换到POST,可以在POST正文中发送查询字符串.然后您可以自己解析原始查询字符串.你甚至可以在这里重复使用param键,因为你正在解析它.
?colors=cyan&colors=magenta&colors=yellow&colors=black
Run Code Online (Sandbox Code Playgroud)
另一个POST选项是在POST主体中发送JSON数组.我知道POST不像GET那样容易使用,但它是一个选项.
["cyan","magenta","yellow","black"]
Run Code Online (Sandbox Code Playgroud)
API网关代理现在支持查询字符串中具有相同名称的多个参数。它们在multiValueQueryStringParameters字典中传递。
例如
GET /api/path/?param=value¶m=othervalue&something=thing
Run Code Online (Sandbox Code Playgroud)
将生成以下请求:
{
"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
}
Run Code Online (Sandbox Code Playgroud)
请参阅文档。
| 归档时间: |
|
| 查看次数: |
5823 次 |
| 最近记录: |