iib*_*sam 2 api amazon-web-services aws-api-gateway
我已经在 API 网关中实现了 GET 请求,并且工作正常,但今天我得到一个名称,其中有“+”符号,所以有人知道.../score?team=name+with+sign在哪里不起作用as ..../score?team-with-dashes工作得很好。请求的内容类型是application/json。
这是身体映射模板(application/json)
{
"body" : $input.json('$'),
"headers": {
#foreach($header in $input.params().header.keySet())
"$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end
#end
},
"method": "$context.httpMethod",
"params": {
#foreach($param in $input.params().path.keySet())
"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
#end
},
"query": {
#foreach($queryParam in $input.params().querystring.keySet())
"$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end
#end
}
}
Run Code Online (Sandbox Code Playgroud)
这与 URL 查询字符串参数或其他内容有关吗?
查询参数中的字符+是特殊字符。它是空格字符的替换字符。
因此,如果客户端打算发送.../score?team=name with spaces,则客户端可以将 URL 编码为.../score?team=name+with+spaces. 它还可能将其编码为.../score?team=name%20with%20spaces.
这意味着在服务器端,参数应该未编码并+转换回空格。
如果您确实希望+查询参数值中包含字符,则必须将其编码为%2B,例如.../score?team=name%2Bwith%2Bsign。