2017-02-15 88 views
0

請求端點失敗,出現以下錯誤:春@GetMapping與@RequestParam和@RequestBody失敗HttpMessageNotReadableException

400 Bad request org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing

@GetMapping 
public List<SomeObject> list(@RequestParam(required = false) String parameter, @RequestBody String body, @RequestHeader("Authorization") String token) { 
..... 
} 

如果@GetMapping@PostMapping一切就像一個魅力,雖然會被改變。 任何想法正在發生什麼?

注:揚鞭用於請求發送,所以它是不太可能的錯誤是捲曲

UPDATE: 因此,它看起來像Spring不支持@RequestBody@GetMapping。我仍然無法弄清楚爲什麼? @DeleteMapping@RequestBody正常工作

回答

1

@RequestBody註釋將(POST/PUT)請求正文中發送的內容與註釋變量進行綁定。由於GET請求中沒有「body」部分,因此spring會拋出HttpMessageNotReadableException異常以表示相同。

作爲一般規則,您只能使用@RequestBody來處理可能包含「body」內容的請求。 POST或PUT。

+0

嗯......但GET也可以有身體 - https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html而且Spring允許使用RequestBody進行GetMapping –

+0

看看這一行,在同一篇文章中 - ** HTTP GET和HTTP POST都可用於執行搜索正文。由於並非所有客戶端都支持GET,所以POST也是允許的。** 根據HTTP標準,帶有正文的GET請求不正確。 –

+0

那麼,有什麼意義--Spring不支持GetMapping的RequestBody? –