當調用get http://localhost:8080/things/ZhaD2lk27XQPRJtwrABltd+UTWXcbnY%2FTrpxGP7VDVo=
我的春節,啓動應用程序RestController有這樣的請求處理程序:爲什麼使用springboot其餘控制器將加號(+)解碼爲url路徑中的space()?
@RequestMapping("/things/{thingId}")
public ResponseEntity<Thing> getThing(
@PathVariable String thingId) {
System.out.println("thingId=" + thingId);
...
結果如下正在打印ZhaD2lk27XQPRJtwrABltd UTWXcbnY/TrpxGP7VDVo=
什麼,而不是我本來期望ZhaD2lk27XQPRJtwrABltd+UTWXcbnY/TrpxGP7VDVo=
。
正如你所看到的,正在變成一個空間。這不應該發生在路徑部分,只有查詢部分。這就是爲什麼我用來構建URL的Spring UriComponentsBuilder.build().encode()
沒有把加號變成%2B
。
我需要調整應用程序已獲得編碼斜槓(/)的工作。詳細信息請參見REST Endpoint unreachable if ID in URL contains %2F。
我正在使用SpringBoot 1.4.4.RELEASE,它使用Tomcat嵌入8.5.11。
我已經嘗試從Spring RestTemplate,Postman和Chrome中調用服務。在所有情況下,相同的結果,加上變成一個空間
你在瀏覽器中輸入網址嗎?還是你用js調用你的服務?還是你從一個Java客戶端調用你的服務? – reos