SpringBoot踩坑记(HTTP 400 错误)
程序员文章站
2022-05-26 17:44:26
HTTP 400 错误 复现错误 ajax请求后台数据时有时会报 HTTP 400 错误 - 请求无效 (Bad request);出现这个请求无效报错说明请求没有进入到后台服务里;原因:1)前端提交数据的字段名称或者是字段类型和后台的实体类不一致,导致无法封装; 2)前端提交的到后台的数据应该是j ......
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
推荐阅读
-
SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录
-
springboot 集成mybatis-plus多数据源踩坑记
-
Gin框架踩坑[参数错误时http状态码始终返回400]
-
SpringBoot踩坑记(HTTP 400 错误)
-
SpringBoot整合Mybatis踩坑记
-
SpringBoot+SpringSecurity+Thymeleaf认证失败返回错误信息踩坑记录
-
springboot 集成mybatis-plus多数据源踩坑记
-
Gin框架踩坑[参数错误时http状态码始终返回400]
-
小白踩坑记:springboot运行一直报错:There was an unexpected error (type=Not Found, status=404).