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

这篇具有很好参考价值的文章主要介绍了SpringBoot之Post请求@RequestBody为空抛出Required request body is missing异常的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 版本升级有可能会改变该信息,因此升级版本后如果字符串信息改变也要做出相应的改变,不过这种概率比较低!可以放心使用。文章来源地址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模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue使用axios发送post请求携带json body参数,后端使用@RequestBody进行接收

    最近在做自己项目中,做一个非常简单的新增用户场景,但是使用原生axios发送post请求的时候,还是踩了不少坑的。 唉,说多了都是泪,小小一个新增业务,在自己前后端一起开发的时候,硬是搞了好久。 下面就把问题总结分享下,防止后人再踩坑。 首先先看下我的接口定

    2024年02月02日
    浏览(55)
  • post请求出现required request body is missing错误的问题所在?

    后端接口查询获取数据库中的数据,前端接受数据进行列表展示。 后端接口swagger测试无误,前端报错500:required request body is missing 给出以下两点原因及其方案: 1.后端原因:controller中该接口函数的参数应为请求体@RequestBody,而不是@RequestParam 改为: 2.前端原因:POST与GET请求

    2024年02月04日
    浏览(75)
  • Postman发送post请求时报400错误,Required request body is missing

    项目形参位置存在@RequestBody注解,用Postman发送post请求时报400错误,Required request body is missing。 错误图示: 解决方法: 方法一: 项目中形参位置不使用@RequestBody,在Postman进行Post请求时,在请求路径后直接拼接参数。 方法二: 项目中形参位置使用@RequestBody,在Postman进行Po

    2024年02月11日
    浏览(68)
  • @RequestBody注解依赖问题,导致传入的body数据为空(已解决)

    当项目引入swagger以后要注意 @RequestBody 这个注解 有两个 第一:  io.swagger.v3.oas.annotations.parameters.RequestBody 这个是swagger的依赖,当引入这个注解后在postman测试传入json数据后会接受不到参数,让传入的参数都为空,但是在swagger里面可以映射到参数 第二: org.springframework.web.bi

    2024年02月06日
    浏览(40)
  • SpringBoot - Post请求-接收参数

    1、下面样例 Controller 接收 form-data 格式的 POST 数据: 2、下面是一个简单的测试样例: 1 、如果没有传递参数   Controller   将会报错,这个同样有如下两种解决办法: 使用  required = false  标注参数是非必须的。 使用   defaultValue   给参数指定个默认值。 2、下面是一个简

    2024年02月08日
    浏览(84)
  • springboot——Request method ‘POST‘ not supported——不支持POST请求(完美解决)

    如下图所示,当我使用POST请求访问时,会出现下面的错误“不支持POST请求” ,那么原因是什么? 很简单!!! 请求的时候或后端接收数据的时候, 把请求参数的方式或接收请求体的方式给搞混了!!! 下面具体讲解一下POST的三种请求方式 目录 POST请求方式一: POST请求方

    2024年02月12日
    浏览(44)
  • Springboot 前后端分离项目中使用拦截器获取不到token或者token为空的问题(OPTION请求被拦截问题)

    转载Springboot前后端分离项目中使用拦截器获取不到token或者token为空的问题(OPTION请求被拦截问题) 目是前后端分离的,并且springboot也配置了跨域功能。 但是配置了JWT功能、以及验证器验证之后却出现了获取不到jwt的问题。获取参数为 null。并且全局异常拦截失效,前端响应

    2024年02月14日
    浏览(48)
  • Springboot GET和POST请求的常用参数获取方式

    可以在控制器方法的参数上使用@RequestParam注解来获取请求中的参数值。例如: 可以为@RequestParam注解的参数提供默认值,以处理参数缺失的情况。例如: 可以使用@RequestParam MapString, String来获取所有的请求参数键值对。例如: 如果参数是作为路径的一部分传递的,可以使用

    2024年02月10日
    浏览(86)
  • 用Springboot创建post请求的接口并用postman测试

    通过https://start.spring.io创建项目:  选择以上选项和依赖,最后点击GENERATE生成一个压缩包。  打开压缩包 ,只要保留src、pom.xml文件,然后用IDEA打开。 2.等文件夹中自动生成各类文件后,创建controller。  启动类文件如下:  在application.properties文件中可以更改端口号  3.最后

    2024年02月16日
    浏览(37)
  • springboot的controller如何拿到post请求中的json数据

    在SpringBoot的Controller中,可以使用注解@RequestBody来获取POST请求中的JSON数据。我们可以将这个注解应用到一个Controller方法的参数上,Spring将会负责读取请求正文中的数据,将其反序列化为一个Java对象,并将其作为Controller方法的参数传递。以 Java 代码为例,示例代码如下: 在

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包