我在AWS API Gateway上使用GET方法配置了资源。集成类型配置为HTTP,但似乎在没有Lambda函数的情况下我无法访问Url查询字符串参数。
例如 我有api端点https://api.domain.com/v1/object/500?param_id=305,我想将其与现有的http集成,例如http://somedomain.com/object/500?param_id=305
当我定义端点URL,例如http://somedomain.com/object/ {id}?param_id = {param_id}时,我无法将param_id定义为url查询字符串参数
我收到以下错误:
Invalid mapping expression specified: Validation Result: warnings : [], errors : [Invalid mapping expression parameter specified: method.request.querystring.param_id
如何在不使用Lambda函数的情况下访问查询字符串参数?
答案 0 :(得分:0)
您可以在集成请求部分中使用正文映射模板,并获取请求正文和查询字符串。在body body模板上构造一个新的JSON,它将包含来自请求体和查询字符串的数据。当我们添加正文映射模板时,您的业务逻辑将获取我们在正文映射模板中构建的JSON。
要获取查询字符串的体内映射模板,请执行,
$ input.params(' querystringkey&#39)
例如,在体内映射模板中,
#set($inputRoot = $input.path('$'))
{
"firstName" : "$input.path('$.firstName')", //This is to get path variable
"lastName" : "$input.path('$.lastName')"
"language" : "$input.params('$.language')" //This is to get query string
}

有关身体贴图模板的详细信息,请阅读https://aws.amazon.com/blogs/compute/tag/mapping-templates/