对端点的请求失败,出现以下错误:
坏请求org.springframework.http.converter.HttpMessageNotReadableException:所需请求体丢失
@GetMapping
public List<SomeObject> list(@RequestParam(required = false) String parameter, @RequestBody String body, @RequestHeader("Authorization") String token) {
.....
}
不过,如果@GetMapping
改为@PostMapping
,一切都会很有魅力。你知道到底怎么回事吗?
注意: Swagger用于发送请求,因此错误不太可能出现在Curl中
更新:所以,看起来Spring不支持@GetMapping
的@RequestBody
。我仍然不知道为什么?@DeleteMapping
与@RequestBody
一起工作很好,并且根据HTTP1.1GET请求可能包含body -@RequestBody
在DELETE
中允许身体,但在GET
中禁止使用,看起来有点不一致。
发布于 2017-02-15 17:50:34
@RequestBody
注释将发送到(POST / PUT)请求体的内容与带注释的变量绑定。由于GET请求中没有“body”部分,spring抛出HttpMessageNotReadableException来表示相同的内容。
通常情况下,您只能对具有“body”内容(如POST或PUT )的请求使用@RequestBody
。
发布于 2019-03-24 15:16:19
今天,我在Spring-webmvc5.1.5中遇到了类似的问题,并检查了库代码。HttpMessageNotReadableException
是从RequestResponseBodyMethodProcessor.readWithMessageConverters
抛出的,因为它调用了readWithMessageConverters
并获得了null。在readWithMessageConverters
中有一个循环,为请求内容类型(for (HttpMessageConverter<?> converter : this.messageConverters)
)搜索合适的转换器,因为我没有在请求中指定和内容类型,所以失败了。
所以我指定了头Content-Type: application/json
并解决了这个问题。
https://stackoverflow.com/questions/42256358
复制相似问题