org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
出现异常的原因:body为空,但是@RequestBody注解默认请求体不能为空。
解决办法
一:查看是不是@GetMapping,Spring Get请求不能使用@RequestBody
这个纯属粗心大意的问题~
二:要求请求用Post却用了Get请求
三:@RequestBody(required = false)
如果是刚刚开发的项目,那么建议这样写。如果已经存在的项目,肯定不能这样写,后面会介绍另外一种相对简单的写法,但是如果Spring版本升级有可能会出现问题。文章来源:https://www.toymoban.com/news/detail-647034.html
@PostMapping("postUrl")
public void postUrl(@RequestBody(required = false) Object object){
if (object == null){
throw new RuntimeException("post请求体body不能为空!");
}
}
四:全局异常捕获
如果Spring 版本升级有可能会改变该信息,因此升级版本后如果字符串信息改变也要做出相应的改变,不过这种概率比较低!可以放心使用。文章来源地址https://www.toymoban.com/news/detail-647034.html
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* 全局返回和异常处理类
*/
@RestControllerAdvice
public class GlobalExceptionHandler {
private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
/**
* 服务器异常
*/
@ExceptionHandler(value =Exception.class)
public Object exception(Exception e){
String msg = e.getMessage();
if (StringUtils.hasText(msg)){
//捕获这个异常信息,如果这个异常信息包含这个字符串就抛出自定义异常。
if (msg.contains("Required request body is missing:")){
throw new RuntimeException("post请求体body不能为空!");
}
}
log.error("Exception异常:",e);
return msg;
}
}
到了这里,关于SpringBoot之Post请求@RequestBody为空抛出Required request body is missing异常的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!