AWS Api Gateway中URL参数中包含“/”时,需要进行转义,否则会导致路由出错。可以使用URI Encode函数将URL参数进行编码,然后在Lambda函数中进行解码。示例代码如下:
在API Gateway中创建GET方法时,在“Integration Request”中设置“Mapping Templates”为“application/json”,并添加以下代码:
#set($inputRoot = $input.path('$')) { "queryStringParameters": { #foreach($key in $input.params().querystring.keySet()) "$key": "$util.urlEncode($input.params().querystring.get($key))" #if($foreach.hasNext),#end #end } }
这将对URL参数进行编码,并在queryStringParameters中传递。在Lambda函数中,可以使用以下代码对参数进行解码:
query_param = event["queryStringParameters"] decoded_param = {} for key, value in query_param.items(): decoded_param[key] = urllib.parse.unquote(value)