例如,如果我们想使用
GET /user?name=bob
或
GET /user/bob
如何将这两个示例作为参数传递给Lambda函数?
我在文档中看到了一些关于设置“映射自”的内容,但在API控制台中找不到这种设置。
method.request.path.parameter-name
用于方法请求页中定义的名为parameter-name
的路径参数。method.request.querystring.parameter-name
用于方法请求页中定义的名为parameter-name
的查询字符串参数。即使我定义了一个查询字符串,我也看不到这两个选项。
发布于 2017-09-08 10:19:04
从2017年9月起,您不再需要配置映射来访问请求体。
您所需要做的就是在Integration下,在资源下面,检查“使用Lambda代理集成”。
然后,您将能够访问查询参数、路径参数和标题,如下所示
event['pathParameters']['param1']
event["queryStringParameters"]['queryparam1']
event['requestContext']['identity']['userAgent']
event['requestContext']['identity']['sourceIP']
发布于 2015-07-10 15:48:07
实现此工作的步骤如下:
在API网关控制台中..。
Resources -> Integration Request
application/json
,即使它显示了默认值(如果不这样做,它将不会保存,也不会提供错误消息){ "name": "$input.params('name')" }
中发布于 2015-12-07 01:26:59
我使用这个映射模板为Lambda事件提供了主体、头、方法、路径和URL查询字符串参数。我写了一篇博文,更详细地解释了模板:http://kennbrodhagen.net/2015/12/06/how-to-create-a-request-object-for-your-lambda-event-from-api-gateway/
下面是可以使用的映射模板:
{
"method": "$context.httpMethod",
"body" : $input.json('$'),
"headers": {
#foreach($param in $input.params().header.keySet())
"$param": "$util.escapeJavaScript($input.params().header.get($param))" #if($foreach.hasNext),#end
#end
},
"queryParams": {
#foreach($param in $input.params().querystring.keySet())
"$param": "$util.escapeJavaScript($input.params().querystring.get($param))" #if($foreach.hasNext),#end
#end
},
"pathParams": {
#foreach($param in $input.params().path.keySet())
"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
#end
}
}
https://stackoverflow.com/questions/31329958
复制相似问题