2014-11-21 119 views
2

我正在嘗試構建一個API,其中應包含一個參數的POST,應該是x-www-form-urlencoded。目前我已經映射它爲:Spring MVC和@RequestParam與x-www-form-urlencoded

@RequestMapping(method = POST, consumes = APPLICATION_FORM_URLENCODED_VALUE, produces = APPLICATION_JSON_VALUE) 
    public ResponseEntity<LinkEntity> createShortLink(@RequestBody String url) { 
    LinkEntity savedLink = linkService.create(url); 
} 

當我做郵差(REST Chrome擴展)一個POST一種形式參數URL = http://www.drissamri.be它進入此方法作爲URL = HTTP%3A%2F如預期的那樣,%2Fwww.drissamri .be。

當我嘗試改變@RequestBody@RequestParam(值=「URL」)我仍然可以與URL =前綴的網址(如預期),但它不再被url編碼。爲什麼編碼不再發生?這是一個錯誤還是有另一種方法來參數urlencoded值

+0

難道你不是指'@RequestParam(「uri」)'? – 2014-11-22 15:26:03

+0

是的,的確,我編輯了這篇文章。 – 2014-11-22 15:38:57

+1

'@ RequestBody'按原樣映射請求主體,'@ RequestParam'從['ServletRequest#getParameter']中取出值(https://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest的.html#的getParameter%28java.lang.String%29)。後者是來自查詢字符串的值以及來自身體的'x-www-form-urlencoded' POST參數的值 - 兩者當然都被解碼。 – 2014-11-22 15:46:03

回答

相關問題