AWS Lambda - 使用 Node.js 获取路径参数

新手上路,请多包涵

在用 Node.js 编写的 AWS lambda 中,当我通过 API 网关进行 GET 调用时,我想提取 URL 的以下部分:

 /devices/{id} --> {id} will be replaced by a value, and that is the value I want!

我知道要获取 QueryStringParameters 您只需使用

event.queryStringParameters.[parameter name]

但是我将如何为路径参数执行此操作,例如上面的 {id}。

还有一个好地方可以让我全面了解在 Node.js 中为 API 编写 lambda 表达式吗?

原文由 Cornel Verster 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 599
2 个回答

我假设您在这里使用 lambda 代理,我正在粘贴 lambda 代理的事件对象示例。

     {
  "message": "Good day, John of Seattle. Happy Friday!",
  "input": {
    "resource": "/{proxy+}",
    "path": "/Seattle",
    "httpMethod": "POST",
    "headers": {
      "day": "Friday"
    },
    "queryStringParameters": {
      "time": "morning"
    },
    "pathParameters": {
      "proxy": "Seattle"
    },
    "stageVariables": null,
    "requestContext": {
      "path": "/{proxy+}",
      "accountId": "123456789012",
      "resourceId": "nl9h80",
      "stage": "test-invoke-stage",
      "requestId": "test-invoke-request",
      "identity": {
        "cognitoIdentityPoolId": null,
        "accountId": "123456789012",
        "cognitoIdentityId": null,
        "caller": "AIDXXX...XXVJZG",
        "apiKey": "test-invoke-api-key",
        "sourceIp": "test-invoke-source-ip",
        "accessKey": "ASIXXX...XXDQ5A",
        "cognitoAuthenticationType": null,
        "cognitoAuthenticationProvider": null,
        "userArn": "arn:aws:iam::123456789012:user/kdeding",
        "userAgent": "Apache-HttpClient/4.5.x (Java/1.8.0_131)",
        "user": "AIDXXX...XXVJZG"
      },
      "resourcePath": "/{proxy+}",
      "httpMethod": "POST",
      "apiId": "r275xc9bmd"
    },
    "body": "{ \"callerName\": \"John\" }",
    "isBase64Encoded": false
  }
}

路径可以从事件对象中的“路径”键中提取,可以从 event.path 访问,之后您可以使用字符串操作函数进一步操作它。

我希望它有帮助!

原文由 varnit 发布,翻译遵循 CC BY-SA 4.0 许可协议

简短回答:

 const { id } = event.pathParameters;

我最近发布了一个简短的培训视频,详细演示了如何创建 API 网关 REST API 并将它们与 AWS Lambda (NodeJS) 集成。请在这里查看:

无服务器架构:AWS API 网关和 Lambda

原文由 jspru 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题