AWS API Gateway支持解析多值查询参数,可以通过使用“greedy”路径变量和“integrations”来实现。下面是一个使用AWS Lambda作为集成端点的示例:
API Gateway资源路径:/items/{itemId}/values
查询参数:value1=1&value1=2&value2=3
在集成请求模板中,使用以下代码将查询参数转换为JSON对象:
#set($inputRoot = $input.path('$')) { "values": { #foreach($entry in $inputRoot.queryParams.keySet()) #set($paramName = $entry) #if($input.params().path.contains($paramName)) #set($paramNameInPath = $input.params().path[$paramName]) "$paramNameInPath" : [ #else "$paramName" : [ #end #foreach($value in $inputRoot.queryParams.get($entry)) "$util.escapeJavaScript($value)" #if($foreach.hasNext),#end #end ] #if($foreach.hasNext),#end #end } }
该代码通过使用$ inputRoot.queryParams对象获取查询参数,并根据路径和参数名称确定参数值在JSON中的位置。结果JSON对象如下所示:
{ "values": { "value1": [ "1", "2" ], "value2": [ "3" ] } }
这是一个简单的方法,可以在API Gateway中轻松解析多值查询参数。