前端发送请求到后端报400错误问题
一般情况下,前端发送请求到后端,报400是由于前后端json对象中的属性名与后端接收请求的实体类的属性名不对应(完全相同)引起的。排除400错误的方法如下:1、前端发送的属性名和后端实体类的属性名不对应解决方法:检查前端发送的Json对象中的属性名与后端接收请求参数的实体类对象的属性名是否对应(名称必须相同),前端发送的JSON对象的属性值后端实体类的属性中必须有,也就是说前端发送的JSO...
一般情况下,前端发送请求到后端,报400是由于前后端json对象中的属性名与后端接收请求的实体类的属性名不对应(完全相同)或者请求参数类型不对应引起的。排除400错误的方法如下:
1、前端发送的属性名和后端实体类的属性名不对应
解决方法:检查前端发送的Json对象中的属性名与后端接收请求参数的实体类对象的属性名是否对应(名称必须相同),前端发送的JSON对象的属性值后端实体类的属性中必须有,也就是说前端发送的JSON对象中的属性后端接收的实体类中必须要包含JSON对象中的所有属性,也就是说实体类中的属性可以比JSON中属性多,但是不能比JSON对象中的属性少
2、前端发送的属性名和后端实体类的属性名都对应
解决方法:这种情况下报400是由于实体类中的属性名中有首字母大写的变量存在,切记接收请求的实体类中的属性中不能有首字母大写的变量名存在,否则也会报400错误,将实体类中的首字母大写的属性改为首字母小写,前端也对应修改即可!!!
3、前端发送的参数和后端接收的参数名称相同,类型不匹配
解决方法:比如前端get请求发送xxx?age=aaa 后端用Integer age 接收,这种情况也会报400错误,仔细检查你的参数类型,看看是否是对应的!
4、后端使用@RequestParam注解必传参数设置问题
当后端使用了@RequestParam注解未给该注解设置required = false属性时,该属性默认为true,也就是必须要给这个字段值传值,如果前端没有给该字段传值,也会报400
一个报400错误的栗子
一个GET请求:http://localhost:8080/springmvc/register?passWorld=123456 (没有name参数,只有passWorld)
后端代码
/**
* @RequestParam(value = "name") 相当于
* @RequestParam(value = "name", required = true)
* 表示必须给userName传值,否则会报400
*/
@RequestMapping("/register")
public String test1(@RequestParam(value = "name") String userName, String passWorld){
return "Spring mvc";
}
上述例子,这种情况请求中必须有name参数,如果没有,就会报400错误
解决方案:如果在业务中这个值必选传值,前端检查并加上这个字段值,如果这个字段值非必须传值得参数,后端修改将必传值属性设置为false,也就是 @RequestParam(value = "name", required = false)
原创不易,转载请注明出处:https://blog.csdn.net/Kermit_father/article/details/83245776
更多推荐
所有评论(0)