我已经在API网关中实现了GET请求并且工作正常但是今天我得到一个名称,其中' +'标志在那里有没有人知道 ... / score?team = name + with + sign 不能用于 .... / score?team-with-dashes 效果很好。 请求的内容类型是application / json。
这是Body Mapping Template(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
}
}
这是否与URL查询字符串参数或其他内容有关?
答案 0 :(得分:3)
查询参数中的+
字符是一个特殊字符。它是空格字符的替换字符。
因此,如果客户端打算发送.../score?team=name with spaces
,则客户端可能会将URL编码为.../score?team=name+with+spaces
。它也可以将其编码为.../score?team=name%20with%20spaces
。
这意味着在服务器端,参数应该是未编码的,+
转换回空格。
如果您真的想在查询参数值中使用+
字符,则必须将其编码为%2B
,例如.../score?team=name%2Bwith%2Bsign
。