昨天做了注册功能,虽然做得比较慢,但总算做完了,今天做登录功能时,我就以昨天的方法做登录,结果在请求接口哪里跪了
这里先讲一下前端请求方式吧
之前没学vue时,用的jQuery请求,算一个百事通吧,既可以跟后台交互,又能渲染数据
有表单get/post提交,ajax get/post提交
-
在接收请求的控制器类的方法中定义属性,通过
@RequestParam
声明接收数据的key@RequestMapping("/add") public ModelAndView add(@RequestParam("bookId") int bid, @RequestParam("bookName") String bname){ System.out.println("---------------------"); return null; }
-
如果控制器类方法的参数名与提交数据的key一致,
@RequestParam
可以省略
比如说你实体类有个Book,里面有bookId,bookName属性,你就可以这样写
//使用属性接收:属性名和提交数据的key一致,@RequestParam可以省略
@RequestMapping("/add")
public ModelAndView add(int bookId,String bookName){
System.out.println("---------------------");
return null;
}
//使用对象接收:要求对象的属性名与提交数据的key一致
@RequestMapping("/add")
public ModelAndView add(Book book){
System.out.println("---------------------");
return null;
}
好吧,重点不在这里,下面是重点
用ajax的post方法提交数据时,要用@RequestBody请求正文,看一下我上面的图,虽然是用axios提交的,但是后端接收数据是一样的
那下面就是介绍一下axios了
用vue写前端代码真的比用jQuery简单多了,简直是后端开发人员的最爱啊,
但是vue有一个小缺点,就是不能提交数据,那么axios就应运而生了。
他有以下几个优点:
-
体积小
-
对RESTful规范有更好的支持
-
支持并发异步请求
axios请求大致可以分为3部分
1 get/delete请求
//发送get请求传递参数
axios.get(url,{
params:{
//参数
}
}).then(function(res){
//回调处理
});
2 post/put请求
//1.发送post请求
axios.post(url).then(function(res){
//回调处理
});
//2.发送post请求传递参数
axios.post(url,{key:value,key2:value}).then(function(res){
//回调处理
});
3自定义请求
但是现在一般推崇自定义请求
axios({
url:"",
method:"delete",
params:{
},
headers:{
},
data:{
}
}).then(function(res){
//回调处理
});
看格式是不是跟jQuery差不多,提交什么方式只需要在method哪里改一下就好了。
看到这里应该对我那部分代码有所了解了,那既然我注册可以成功,为什么登录他提示我找不到请求体呢?Required request body is missing
后来才知道post提交才需要到requestBosy找json数据,我登录用的get方式,直接用@paragram或者不用就可以解决了