首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将GET请求的eventbody中的"queryStringParameter“移动到AWS API Gateway HTTP API的事件"body”中?

是否可以将GET请求的eventbody中的"queryStringParameter“移动到AWS API Gateway HTTP API的事件"body”中?
EN

Stack Overflow用户
提问于 2021-10-21 15:07:34
回答 1查看 70关注 0票数 1

我试图将事件中的"queryStringParameters“放入事件的"body”键中,这样我就可以像解析post请求一样解析它们。这可以通过HTTP api实现吗?我尝试在集成设置中使用参数映射,但这只允许我将主体附加到queryString。

EN

回答 1

Stack Overflow用户

发布于 2021-10-21 15:34:56

使用body和使用查询参数从POST请求中获取值的方式是不同的。因此,两者都不能像您所希望的那样出现在body属性中。

在您的Api网关资源中添加URL查询字符串参数时,传入queryStringParameters

当您向API中的事件发送请求时,以下事件将被发送到Lamba函数

代码语言:javascript
复制
{
    "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中获取事件的查询参数:

代码语言:javascript
复制
 event.queryStringParameters && event.queryStringParameters.foo 

以及我们需要使用body属性获取的正文:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69664433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档