Amazon web services 如何在serverless中为一个处理程序定义多个路径?

Amazon web services 如何在serverless中为一个处理程序定义多个路径?,amazon-web-services,serverless-framework,serverless,Amazon Web Services,Serverless Framework,Serverless,我一直在网上尝试和搜索,但没有找到回应。是否可以使用无服务器框架实现以下目标: 我想使用get.handler,该处理程序具有以下定义的代码,用于获取一个项目和所有项目。因此: 如果我点击api.example.com/items/我将检索所有项目 如果我点击api.example.com/items/1234我检索到id=1234的项目 到目前为止在get.handler中检查event.pathParameters?event.pathParameters.itemId:null如果特定

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

我想使用
get.handler
,该处理程序具有以下定义的代码,用于获取一个项目和所有项目。因此:

  • 如果我点击
    api.example.com/items/
    我将检索所有项目
  • 如果我点击
    api.example.com/items/1234
    我检索到id=1234的项目
到目前为止
get.handler
中检查
event.pathParameters?event.pathParameters.itemId:null
如果特定项存在并调用某些
getItem(itemdId)
函数,如果它不存在,则调用
getAll()
函数

如果我在路径中传递了项目id,但当我请求
api.example.com/items/
时,会出现以下错误:
在授权标头中不是有效的key=value对(缺少等号)
。这意味着我的路径有问题,我必须将项目id传递给路径参数


我的问题是:是否有一种方法可以在
-http:
区域中使用多个路径,或者建议使用什么方法来解决此问题(只需创建两个单独的处理程序)?

有两种方法可以轻松完成您想要的任务。 首先,lambda函数可以由多个事件触发。您可以向处理程序数组添加另一个
http
事件,如下所示:

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

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

我希望这里面有输入错误。“首先,lambda函数可以有多个处理程序。”然后您将演示如何向单个处理程序添加另一个事件。是的,您是正确的。应该是“Lambda函数可以订阅多个事件”。我已经修改了答案。
get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get
      - http:
          path: items/
          method: get