SpringBoot踩坑记(HTTP 400 错误)

HTTP 400 错误前端

复现错误

ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;
缘由:
1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,致使没法封装;
2)前端提交的到后台的数据应该是json字符串类型,而前端没有将对象转化为字符串类型;java

错误代码

$.ajax({
        type: "POST",
        url: "news/newsAdd",
        data: data,
        dataType:'json',
        contentType:"application/json",
        success: function(data, textStatus, jqXHR) {
            console.log(data)
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus && textStatus == "timeout") {
                confirm("网络超时,请重试!");
            } 
        }
    }
);

 

缘由:直接将json做为参数传入

参考  spring @RequestParam, @RequestBody Map注入注意事项web

  • @RequestBody须要把全部请求参数做为json解析,所以,不能包含key=value这样的写法在请求url中,全部的请求参数都是一个json
  • 直接经过浏览器输入url时,@RequestBody获取不到json对象,须要用java编程或者基于ajax的方法请求,将Content-Type设置为application/json
  • @RequestParam参数中包含Map时,不要再写其余参数了,不然,map都会包含进去。

更正代码

$.ajax({
        type: "POST",
        url: "news/newsAdd",
        data: JSON.stringify(data),
        dataType:'json',
        contentType:"application/json",
        success: function(data, textStatus, jqXHR) {
            console.log(data)
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            if (textStatus && textStatus == "timeout") {
                confirm("网络超时,请重试!");
            } 
        }
    }
);

 

参考:JSON.stringify()的用法

@RequestBody的使用

 

 

good luck!ajax

 

 


连接:https://juejin.im/post/5cd0ea2f6fb9a032076c1ca5spring

相关文章
相关标签/搜索