SpringBoot之Post请求@RequestBody为空抛出Required request body is missing异常的解决方案

您所在的位置:网站首页 bootismissing怎么解决 SpringBoot之Post请求@RequestBody为空抛出Required request body is missing异常的解决方案

SpringBoot之Post请求@RequestBody为空抛出Required request body is missing异常的解决方案

2024-06-12 10:58| 来源: 网络整理| 查看: 265

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

出现异常的原因:body为空,但是@RequestBody注解默认请求体不能为空。

解决办法 一:查看是不是@GetMapping,Spring Get请求不能使用@RequestBody

这个纯属粗心大意的问题~

二:要求请求用Post却用了Get请求 三:@RequestBody(required = false)

如果是刚刚开发的项目,那么建议这样写。如果已经存在的项目,肯定不能这样写,后面会介绍另外一种相对简单的写法,但是如果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; } }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3