【问题标题】:How to pass multiple get parameters in my lambda function?如何在我的 lambda 函数中传递多个 get 参数?
【发布时间】:2019-08-25 06:47:48
【问题描述】:
我有多个 GET 参数,那么我应该如何传入 lambda 函数以及我的 serverless.yml 会是什么样子。当前下面是配置
serverless.yml
myFunc:
handler: com.mcm.in.MyHandler
events:
- http:
path: user
method: get
cors: true
Request:/mylist?page=1&size=10&filter=userId=abc&sort=-userId&version=1554304254262
另外我应该如何在 sls 调用本地调用?
我试过没有参数,它在无服务器中不起作用
【问题讨论】:
标签:
java
amazon-web-services
path
aws-lambda
serverless-framework
【解决方案1】:
您可以创建一个请求模板,该模板将使用参数映射您的请求内容,如 the documentation. 中所述,您的函数将如下所示(如果您想采用 page 参数,例如:
myFunc:
handler: com.mcm.in.MyHandler
events:
- http:
path: user
method: get
cors: true
integration: lambda
request:
template:
application/json: '{ "page" : "$input.params(''page'')" }'
【解决方案2】:
我以这种方式创建了请求模板,用于在 URL 中传递多个参数
template:
application/json: '{ "userid":"$input.params(''userid'')","activityid":"$input.params(''activityid'')"}'
这是完整的代码
functions:
hello:
handler: handler.hello
events:
- http:
path: /
method: get
likes:
handler: handler.likes
events:
- http:
path: /likes
method: get
integration: lambda
reqValidatorName: xMyRequestValidator
request:
passThrough: NEVER
parameters:
querystrings:
userid: true
activityid:true
template:
application/json: '{ "userid":"$input.params(''userid'')","activityid":"$input.params(''activityid'')"}'
response:
headers:
Content-Type: "'application/json'"