在无服务器框架 1.0 中使用路径参数

Use path params in serverless framework 1.0

我想使用 GET 请求的路径参数 /customer/{customerId} 以便使用 AWS Lambda 查询客户:

functions:
  createCustomer:
    handler: handler.createCustomer
    events:
    - http:
        path: customer
        method: post
  readCustomer:
    handler: handler.readCustomer
    events:
    - http:
        path: customer
        method: get

我如何定义路径参数才能使用 无服务器框架 1.0 将其传递到我的 AWS Lambda 函数?

更改路径名

path: customer/{customerId}

更改您的 handler.js 文件

module.exports.createCustomer= function(event, context) {

{ message: 'Go Serverless v1.0! Your function executed successfully!', event }

// you can write your logic here


};

#解法

  1. 定义路径参数 - 例如 customerId - 在 serverless.yml:

path: customer/customerId

  1. 在 API 网关中,在您的 API /customer/{customerId} 下转到 Integration Request 并创建一个新的 Body Mapping响应 application/json 并具有以下内容的模板

{ "customerId": "$input.params('customerId')" }

现在,路径参数 customerId 作为您的 JSON 事件传递给 AWS Lambda 函数:

{
  "input": "{\"customerId\":\"marcel@example.com\"}",
  "response": {
    "Item": {
      "password": "abc#123",
      "email": "marcel@example.com"
    }
  }
}

在serverless.yml

中定义
readCustomer:
  handler: handler.readCustomer
  events:
    - http:
        path: customer/{customerId}
        method: get

在代码

中访问customerId
const customerId = event.pathParameters.customerId;