当前位置: 移动技术网 > IT编程>开发语言>Jquery > SpringBoot踩坑记(HTTP 400 错误)

SpringBoot踩坑记(HTTP 400 错误)

2019年12月28日  | 移动技术网IT编程  | 我要评论

http 400 错误

复现错误

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

错误代码

$.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注入注意事项

  • @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!

 

 


链接:https://juejin.im/post/5cd0ea2f6fb9a032076c1ca5

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网