springboot处理接收axios请求参数解析
最近用到vue+springboot做前后端分离,而vue项目的网络请求通常使用axios插件在项目中遇到get请求正常,post请求后台接收不到参数,查原因才知道axios会把post请求中的参数,会转换包装成一个json来传递通过查看axios网络请求的header可以看出Content-Type是application/json;charset=UTF-8而服务器接收的Co...
·
最近用到vue+springboot做前后端分离,而vue项目的网络请求通常使用axios插件
在项目中遇到get请求正常,post请求后台接收不到参数,
查原因才知道axios会把post请求中的参数,会转换包装成一个json来传递
通过查看axios网络请求的header可以看出Content-Type是 application/json;charset=UTF-8
而服务器接收的Content-Type是application/x-www-form-urlencoded
解决办法:
方法1.后端处理,在Controller接收数据这里 @ResquestBody注解一下
@ResponseBody
@PostMapping("/login")
public String login(@RequestBody JSONObject jsonObject){
String username = jsonObject.getString("username");
String password = jsonObject.getString("password");
if(StringUtils.isEmpty(username)){
return JsonUtil.toJson("用户名不能为空").toString();
}else if(StringUtils.isEmpty(password)){
return JsonUtil.toJson("密码不能为空").toString();
}
User user = userService.queryByName(username);
if(user == null){
return JsonUtil.toJson("用户不存在").toString();
}
boolean result = CryptoUtils.verify(user.getPassword(), password, user.getSalt());
if(result){
jsonObject = JsonUtil.toJson();
jsonObject.put("data",user);
}else{
jsonObject = JsonUtil.toJson("密码错误");
}
return JsonUtil.getReultJson(jsonObject);
}
方法2:前端处理,修改axios中的post请求,重新封装请求参数
方法3:前端处理,引入qs库
更多推荐
已为社区贡献1条内容
所有评论(0)