在写一个 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]
解决办法:
- 引入Qs
import axios from 'axios';
// 避免传json格式的对象给服务器
import Qs from 'qs' // qs本身就在axios里,不需要 npm i 安装
- 使用下面的方法
Qs.stringify(this.form)
问题解决