我试图将事件中的"queryStringParameters“放入事件的"body”键中,这样我就可以像解析post请求一样解析它们。这可以通过HTTP api实现吗?我尝试在集成设置中使用参数映射,但这只允许我将主体附加到queryString。
发布于 2021-10-21 15:34:56
使用body和使用查询参数从POST请求中获取值的方式是不同的。因此,两者都不能像您所希望的那样出现在body属性中。
在您的Api网关资源中添加URL查询字符串参数时,传入queryStringParameters。

当您向API中的事件发送请求时,以下事件将被发送到Lamba函数
{
"resource": "/{proxy+}",
"path": "/path/to/resource",
"httpMethod": "POST",
"isBase64Encoded": true,
"queryStringParameters": {
"foo": "bar"
},
"multiValueQueryStringParameters": {
"foo": [
"bar"
]
},
"pathParameters": {
"proxy": "/path/to/resource"
},
"stageVariables": {
"baz": "qux"
},
"body":"{ \"time\": \"evening\" }",
"headers": {
...
},
...
}您可以使用以下属性在Lambda中获取事件的查询参数:
event.queryStringParameters && event.queryStringParameters.foo 以及我们需要使用body属性获取的正文:
if (event.body) {
let body = JSON.parse(event.body)
if (body.time)
time = body.time;
}这样,在您的Lambda中,您需要以不同的方式解析它们。
有关如何使用API Gateway和Lambda的更多信息,请查看此处:Tutorial: Build a Hello World REST API with Lambda proxy integration
https://stackoverflow.com/questions/69664433
复制相似问题