axios发送post请求时会将对象转变为json格式的问题

123 阅读1分钟

image.png


在写一个 SpringBoot+Vue 的项目时出现了以下的问题:

前端发送请求代码:

// 发送请求,使用户登录  this.form:这里是form表单收集的用户登录数据
axios.post('http://localhost:8088/home/login',this.form).then(
  response => {
     ...
  },
  error => {
     ...
  }
);

后端响应代码:

@RestController
@RequestMapping("/home")
public class HomeController {

    @Autowired
    private HomeService homeService;

//    登录逻辑
    @RequestMapping("/login")
    public Object login( HttpServletRequest request,
                         @RequestParam String username,
                         @RequestParam String password,
                         @RequestParam String status){
        

        System.out.println("用户名>>>"+username);
        System.out.println("密码>>>"+password);
        System.out.println("权限>>>"+status);

        return homeService.login(request,username,password,status);
    }

}

结果:

Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'username' for method parameter type String is not present]

解决办法:
  1. 引入Qs
  import axios from 'axios';
  // 避免传json格式的对象给服务器
  import Qs from 'qs'               // qs本身就在axios里,不需要 npm i 安装
  1. 使用下面的方法
Qs.stringify(this.form)

问题解决