异常:HttpMessageNotReadableException: Required request body is missing
·
第一种情况:
在post接口中定义了@RequestBody 入参,接口实际调用的时候没有入参。传入相关参数即可解决,或者在@RequestBody(required=false) 。
@PostMapping(value = "/postpeople")
public BaseResult postPeople(@RequestBody@RequestBody(required=false) SearchParam searchParam) {
log.info("param :{}", JSON.toJSON(searchParam));
return new BaseResult();
}
第二种情况:
在get接口种使用了@RequestBody 入参,例如:
@GetMapping("/people/getTest")
public BaseResult getTest(@RequestBody SearchParam searchParam) {
UserResult people = new UserResult();
people.setAge(12);
people.setUserName("这是个测试");
people.setPayType(EnumParam.ALIPAY);
people.setXueli("本科");
return people;
}
这种情况的解决方法如:将get类型接口改成post类型接口,或者用@requestParam接收参数。
第三种情况:
在拦截器种使用了request.getInputStream()或者getReader(),然后在controller接口种使用了@requestbody ,这种情况是因为Spring有一个问题就是: ServletRequest中getReader()和getInputStream()只能调用一次。而又由于@RequestBody注解获取输出参数的方式也是根据流的方式获取的。所以我们前面使用流获取后,后面的@RequestBody就获取不到对应的输入流了。这种情况的解决方法可以参考:spring boot拦截器中获取request post请求中的参数_u011277123的博客-CSDN博客_springboot拦截请求参数
更多推荐
已为社区贡献3条内容
所有评论(0)