@RequestBody对象为空,异常Required request body is missing的解决办法

     由于与前端交互的过程当中,都是用json数据与前端进行交互,这样想取出整个传送过来的json数据的时候,就需要用到@RequestBody这个注解,前端发送数据的格式如下:

//测试发送json数据
$("#id").click(function () {
    $.ajax({
        type: "post",
        url: "test",
        contentType: "application/json; charset=utf-8",
        data: JSON.stringify(getTestJson()),
        dataType: "json",
        success: function (data) {
            alert(data);
        },
        error:function (XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.status);
            alert(XMLHttpRequest.readyState);
            alert(textStatus);
        }
    });

    function getTestJson() {
        var Json = {
            "a":"aaaaaaa",
            "b":0,
            "c":2,
        };
        return Json;
    }

});

 
    前台的AJAX这样去写,这样传输数据,那么后台就可以拿到完整的数据了,具体怎么拿看如下代码:
@RequestMapping(value = "/test",method = RequestMethod.POST)
    @ResponseBody
    public String test(@RequestBody String requestJson){
            if(requestJson==null||requestJson==""){
                return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"请求接口需要传递正确的JSON数据");
            }
}
这样,加上一个@RequestBody注解,就可以轻松的把请求过来的json数据全部拿到,然后就随便你把json数据是转成
JSONObject还是普通的JAVA对象进行操作了。
    但是,我们在传输json数据的时候,假如json数据为空,那么就会报一个错误,就是Required request body is missing
这个的意思就是我们这个接口必须要传输json格式的数据,假如没有数据,就会报错返回错误的信息。
    但是,我们一般想做的样子是我们由自己去判断数据是否为空,假如为空,返回我们与前端约定格式的数据,那样会
方便前端来进行调试。
    假如不想让系统报错,那么就需要在@RequestBody增加一个Required属性了,并且把该属性设置为false,如下:
 @RequestMapping(value = "/test",method = RequestMethod.POST)
    @ResponseBody
    public String test(@RequestBody(required = false) String requestJson){
            if(requestJson==null||requestJson==""){
                return ApiResponse.buildFailResponse(ResultConstant.OPERATOR_FAIL,"请求接口需要传递正确的JSON数据");
            }
}



 
 

  • 22
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
回答: 当出现@RequestBody Required request body is missing异常时,这意味着在前端调用接口时没有传递请求主体的参数。这个异常是由于在代码中使用了@RequestBody注解,并且设置了required属性为true,表示请求主体内容是必需的。如果前端没有传递请求主体参数,就会抛出这个异常。\[2\]在接口文档测试时,可以传递空值作为请求主体参数,因为接口文档对接的并不是HTTP的传输方式。但是在实际前端对接时,如果没有传递请求主体参数给后端,就会报Required request body is missing异常。\[3\]因此,要解决这个异常,需要确保在前端调用接口时传递正确的请求主体参数。 #### 引用[.reference_title] - *1* [Springboot--springmvc Required request body content is missing异常](https://blog.csdn.net/u014320421/article/details/78800856)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [“Required request body is missing异常,要注意看看是不是下面这个问题](https://blog.csdn.net/weixin_61016066/article/details/125187074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值