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

rox*_*ens 4 amazon-web-services serverless-framework serverless

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

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

  • 如果我点击api.example.com/items/我检索所有项目
  • 如果我打api.example.com/items/1234我检索项目id = 1234
 - get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get
Run Code Online (Sandbox Code Playgroud)

到目前为止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:区域使用多条路径,或者有什么推荐的方法可以解决这个问题(只需创建两个单独的处理程序)?

Aar*_*erg 6

有两种方法可以轻松完成您正在寻找的内容。首先,一个 lambda 函数可以由多个事件触发。您可以将另一个http事件添加到处理程序数组中,如下所示:

get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get
      - http:
          path: items/
          method: get
Run Code Online (Sandbox Code Playgroud)

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