2017-03-06 69 views
0

我已经在API网关中实现了GET请求并且它的工作正常,但是今天我得到一个名称,其中有'+'号,所以有人有任何想法.../score?team = name + with + sign不能正常工作,如..../score?团队与破折号完美无缺。 请求的内容类型是application/json。AWS API网关获取请求查询参数时'+'号不起作用

这里是身体映射模板(应用/ 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查询字符串参数或其他什么东西?

回答

3

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

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

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

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

+0

如果我使用%2B,那么它会给我服务器找不到页面。 – iibtisam

+0

什么是您的完整URL给出该错误? –

+0

完整的URL有一些客户的信息,因为它是由我们的服务器生成的,所以我不能在这里分享。让我创建一个临时用户,然后我可以分享。 – iibtisam