前端发送请求到后端报400错误问题

一般情况下,前端发送请求到后端,报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

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值