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/
- 如果我点击
我检索到id=1234的项目api.example.com/items/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