如何在无服务器中为一个处理程序定义多个路径?

How to define multiple paths for one handler in serverless?

我一直在网上尝试和搜索,但没有找到回复。是否可以使用无服务器框架实现以下目标:

我想使用具有以下定义代码的 get.handler 来获取一个项目和获取所有项目。所以:

 - get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get

到目前为止 get.handler 我检查 event.pathParameters? event.pathParameters.itemId : null 如果特定项目存在并调用一些 getItem(itemdId) 函数,如果它不存在退出我调用 getAll() 函数。

如果我在它有效的路径中传递项目 ID,但是当我请求 api.example.com/items/ 时,我收到以下错误: not a valid key=value pair (missing equal-sign) in Authorization header。这意味着我的路径有问题,我必须将项目 ID 传递给路径参数。

我的问题是: 有没有办法在 - http: 区域使用多个路径,或者推荐的解决这个问题的方法是什么(只是创建两个单独的处理程序)?

有两种方法可以轻松完成您要查找的内容。 首先,lambda 函数可以由多个事件触发。您可以像这样向处理程序数组添加另一个 http 事件:

get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get
      - http:
          path: items/
          method: get

或者,您可以使用 {proxy+} 参数。您可以阅读有关各种代理方法的更多信息 here