SpringBoot获取vue端的json不为空但 RequestBody的实体为空???

Login.vue

<template>
  <div>
    手机号:<input type="text" v-model="loginForm.userphone" placeholder="请输入手机号"/>
    <br><br>
    密码: <input type="password" v-model="loginForm.userpass" placeholder="请输入密码"/>
    <br><br>
    <button v-on:click="login">登录</button>
  </div>
</template>

<script>

export default {
  name: 'Login',
  data () {
    return {
      loginForm: {
        userphone: '',
        userpass: ''
      },
      responseResult: []
    }
  },
  methods: {
    login () {
      this.$axios
        .post('/login', {
          userphone: this.loginForm.userphone,
          userpass: this.loginForm.userpass
        })
        .then(successResponse => {
          if (successResponse.data.code === 200) {
            this.$router.replace({path: '/index'})
          }
        })
        .catch(failResponse => {
        })
    }
  }
}
</script>

 

RequestLoginVo.java

@Getter
@Setter
public class RequestLoginVo {
    @JsonProperty(value = "userPhone")
    private  String userPhone;
    @JsonProperty(value = "userPass")
    private String userPass;

//    private String captcha;
}

 

UserController.java

    @CrossOrigin
    @PostMapping(value = "api/login")
    @ResponseBody
    public Result login(@RequestBody RequestLoginVo requestLoginVo){

        System.out.println(requestLoginVo.getUserPhone());
        System.out.println(requestLoginVo.getUserPass());
        System.out.println(requestLoginVo);

        User user=userService.queryByUserPhone(requestLoginVo.getUserPhone());
        //用户不存在或密码错误
        if(user==null || !user.getUserPass().equals(Md5Utils.hash(requestLoginVo.getUserPass()))){
            if(user==null)
                System.out.println("user==null");
            if(!user.getUserPass().equals(Md5Utils.hash(requestLoginVo.getUserPass())))
                System.out.println("wrong pass");
            return new Result(400,"失败");
        }
        Map<String,Object> userMap=new HashMap<>();
        userMap.put("userId",user.getUserId());
        if(user.getUserType()== Helpless.UserTypeEnum.ORDUSER){
            userMap.put("isAdmin",true);
            return new Result(200,"成功");
//            return Result.getSuccess().setData(userMap);
        }else{
            userMap.put("isAdmin",false);
            return new Result(200,"成功");
//            return Result.getSuccess().setData(userMap);
        }
    }

 

把RequestLoginVo换成String类型,能输出正确的json格式,RequestLoginVo类型就为null

axios默认带的json格式,你回传的数据有问题。这个全是小写,

这个驼峰命名,映射不到了。

所以应该把前端 userphone改成 userPhone,userpass改成userPass

改成小写:userphone和userpass

抓包看一下 axios发送的类型 是什么  可能是 application/json  而springBoot当做 www-urlencoded解析了 。。

就是content-type的类型

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y