gpt4 book ai didi

javascript - 定义 API GATEWAY 列表类型参数

转载 作者:行者123 更新时间:2023-12-01 01:43:06 25 4
gpt4 key购买 nike

根据aws docs可以以 foo=1,2,3

格式传递列表类型的查询参数

但是当我这样做时,我在 lambda event.queryStringParameters.foo === '1,2, 中收到 string 而不是 array 3'

我是否遗漏了某些内容,或者 aws 不支持此功能?

最佳答案

抱歉,我还没有足够的代表来发表评论,因此必须将此作为答案提交。

似乎有一个新的 Lambda 事件字段“multiValueQueryStringParameters”。

例如,以下 URL 将在 AWS Lambda 中生成此事件:

https://example.uk/API/search?excludeLabels=sstc&excludeLabels=empty&excludeLabels=removed&limit=500

{
"resource": "/{proxy+}",
"path": "/API/search",
"httpMethod": "GET",
"headers": {},
"multiValueHeaders": {},
"queryStringParameters": {
"excludeLabels": "removed",
"limit": "500"
},
"multiValueQueryStringParameters": {
"excludeLabels": [
"sstc",
"empty",
"removed"
],
"limit": [
"500"
]
},
"pathParameters": {
"proxy": "search"
},
"stageVariables": {},
"requestContext": {},
"body": null,
"isBase64Encoded": false
}

请注意,“queryStringParameters”字段仅包含最后一个值。

您可以通过 urijs 库轻松处理这两者:

module.exports.handler = async (event, context) => {
const { path, queryStringParameters, multiValueQueryStringParameters } = event;

const uriPath = new URI(path);
if (queryStringParameters) {
uriPath.query(queryStringParameters);
}

if (multiValueQueryStringParameters) {
uriPath.query(multiValueQueryStringParameters);
}

// -- snip bootstrap of HAPI server --

// map lambda event to hapi request
const options = {
credentials: event.requestContext.authorizer,
headers,
method: event.httpMethod,
payload: event.body,
url: uriPath.toString(),
validate: false,
};

const res = await hapiServer.inject(options);

return {
statusCode: res.statusCode,
headers: res.headers,
body:
typeof res.result === 'string' ? res.result : JSON.stringify(res.result),
};
}

关于javascript - 定义 API GATEWAY 列表类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52222407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com