如何在 Serverless Lambda 中声明一个可选的 get 参数?
How to declare an optional get parameter in Serverless Lambda?
我想了解是否有用于在无服务器中定义可选路径参数的快速语法(以部署在 AWS lambda 上)。
这是我的函数
函数:
MyFunc:
handler: handler.myFunc
events:
- http:
path: /getdata/{my_id}
method: get
request:
parameters:
paths:
my_id: true
我在互联网上发现了一个定义可选参数的技巧,例如:
path: /getdata/{?my_id}
但它不适用于无服务器。
我在部署时得到了这个错误:
Resource's path part only allow a-zA-Z0-9._- and curly braces at the beginning and the end.
我也在想要不要改:
my_id: false
会是我的情况(但不是)
那么无服务器的方式是 my_id 可选所以两个 http 调用:
http://.../getdata
http://.../getdata/12345
将由 MyFunc 管理?
希望有一个更简洁的解决方案,因为需要创建两个不同的 endpoints/func/lambda
谢谢
定义两个事件。
MyFunc:
handler: handler.myFunc
events:
- http:
path: /getdata/
method: GET
- http:
path: /getdata/{id}
method: GET
然后路径变量 id
将与 API 网关一起工作。在您的 lambda 代码中检查 event.pathParameters.id
。请注意,因为如果 id
未出现,则不必定义 event.pathParameters
。
更新:
有
request:
parameters:
paths:
id: false
在无服务器 yaml 中对生成的 CloudFormation 模板没有任何影响。您可以使用 sls package -p /package/dir
.
自行检查
我想了解是否有用于在无服务器中定义可选路径参数的快速语法(以部署在 AWS lambda 上)。
这是我的函数
函数:
MyFunc:
handler: handler.myFunc
events:
- http:
path: /getdata/{my_id}
method: get
request:
parameters:
paths:
my_id: true
我在互联网上发现了一个定义可选参数的技巧,例如:
path: /getdata/{?my_id}
但它不适用于无服务器。 我在部署时得到了这个错误:
Resource's path part only allow a-zA-Z0-9._- and curly braces at the beginning and the end.
我也在想要不要改:
my_id: false
会是我的情况(但不是)
那么无服务器的方式是 my_id 可选所以两个 http 调用:
http://.../getdata
http://.../getdata/12345
将由 MyFunc 管理?
希望有一个更简洁的解决方案,因为需要创建两个不同的 endpoints/func/lambda
谢谢
定义两个事件。
MyFunc:
handler: handler.myFunc
events:
- http:
path: /getdata/
method: GET
- http:
path: /getdata/{id}
method: GET
然后路径变量 id
将与 API 网关一起工作。在您的 lambda 代码中检查 event.pathParameters.id
。请注意,因为如果 id
未出现,则不必定义 event.pathParameters
。
更新:
有
request:
parameters:
paths:
id: false
在无服务器 yaml 中对生成的 CloudFormation 模板没有任何影响。您可以使用 sls package -p /package/dir
.