如何在 AWS API 网关中传递查询字符串参数?

How to pass the query string parameters in the AWS API Gateway?

以下是我的 Lambda 处理程序,它需要来自 queryStringParameters 的 users 数据:-

export const lambdaHandler = async (event, context) => {
    try {
        const numberOfUsersRequested= (event && event.queryStringParameters.users) ? event.queryStringParameters.users : 10;
        const users = await generateUsers(numberOfUsersRequested).then(data => data.users);

我正在使用 AWS SAM 开发我的 Lambda,我可以在本地使用 event.json 作为此 Lambda 的输入事件来很好地测试它。这是 event.json 的一大块,我在其中传递 queryStringParamters 用户,如下所示:-

{
  "body": "{\"message\": \"mock data\"}",
  "resource": "/{proxy+}",
  "path": "/path/to/resource",
  "httpMethod": "POST",
  "isBase64Encoded": false,
  "queryStringParameters": {
    "users": 200
  },

现在,我可以知道如何从 AWS API 网关控制台传递相同的 QueryStringParameters 吗?目前,我在 API 网关的 AWS 控制台上收到此 500 错误:-

{
  "message": "Internal server error"
}

Mon Sep 28 01:24:15 UTC 2020 : Endpoint response headers: {Date=Mon, 28 Sep 2020 01:24:15 GMT, Content-Type=application/json, Content-Length=2, Connection=keep-alive, x-amzn-RequestId=0e1f110c-e80c-4ff1-870a-5cafd04167db, x-amzn-Remapped-Content-Length=0, X-Amz-Executed-Version=$LATEST, X-Amzn-Trace-Id=root=1-5f713b3d-4762f9b07ee8c1d7c6623574;sampled=0}
Mon Sep 28 01:24:15 UTC 2020 : Endpoint response body before transformations: {}
Mon Sep 28 01:24:15 UTC 2020 : Execution failed due to configuration error: Output mapping refers to an invalid method response: 200
Mon Sep 28 01:24:15 UTC 2020 : Method completed with status: 500

我已经执行了以下步骤来缓解问题,但没有奏效。好像少了什么 :- 1)在方法请求中添加了 url 查询字符串参数作为用户(参考截图)

  1. 在集成请求 -> 映射模板中,将映射添加为 application/json:-

    { “用户”:“$input.params('users')” }

  1. 最后将查询字符串作为 users=6 传递。

在您的情况下,event 应该只是:

{
    "users": "6"
}

您可以将以下内容添加到处理程序的开头以确认:

  console.log(JSON.stringify(event, null, 2));

因此,要获得 users 值,您应该只使用 event.users,而不是 event.queryStringParameters.users