2017-03-06 43 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

相關問題