AWS API Gateway使用' +'获取请求查询参数标志不工作

时间:2017-03-06 15:48:13

标签: api amazon-web-services aws-api-gateway

我已经在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查询字符串参数或其他内容有关?

1 个答案:

答案 0 :(得分:3)

查询参数中的+字符是一个特殊字符。它是空格字符的替换字符。

因此,如果客户端打算发送.../score?team=name with spaces,则客户端可能会将URL编码为.../score?team=name+with+spaces。它也可以将其编码为.../score?team=name%20with%20spaces

这意味着在服务器端,参数应该是未编码的,+转换回空格。

如果您真的想在查询参数值中使用+字符,则必须将其编码为%2B,例如.../score?team=name%2Bwith%2Bsign