org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
出现异常的原因:body为空,但是@RequestBody注解默认请求体不能为空。
这个纯属粗心大意的问题~
如果是刚刚开发的项目,那么建议这样写。如果已经存在的项目,肯定不能这样写,后面会介绍另外一种相对简单的写法,但是如果Spring版本升级有可能会出现问题。
@PostMapping("postUrl") public void postUrl(@RequestBody(required = false) Object object){ if (object == null){ throw new RuntimeException("post请求体body不能为空!"); } }
如果Spring 版本升级有可能会改变该信息,因此升级版本后如果字符串信息改变也要做出相应的改变,不过这种概率比较低!可以放心使用。
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; } }