RESTFUL风格简介
restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制
RESTful的关键是定义可表示流程元素/资源的对象。在REST中,每一个对象都是通过URL来表示的,对象用户负责将状态信息打包进每一条消息内,以便对象的处理总是无状态的。
RESTFUL对于资源的具体操作类型,由HTTP动词表示。
常用的HTTP动词有下面五个:
1.GET(SELECT):从服务器取出资源(一项或多项)
HTTP GET /user/1 :获得id=1的user
HTTP GET /user :获取所有的用户信息
2.POST(CREATE):在服务器新建一个资源。
HTTP POST /user :新增一个user,需要把提交的user信息放在请求的body中提交
3.PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
HTTP PUT /user/1 :修改id=1的user信息,需要把修改的user信息放在请求的body中提交
4.PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
HTTP PATCH /user/1 :修改id=1的user信息,需要把修改的user信息放在请求的body中提交
5.DELETE(DELETE):从服务器删除资源。
HTTP DELETE /user/1:删除id=1的user
当然可以理解为对请求进行定义,一种请求进行一种类型的操作,使用请求进行区分,不同的是我们是根据请求区分操作
SpringMVC代码实现
1.get请求的实现(get请求的定义:获取数据)
JQ请求处理:
$("#btn1").click(function (){
var id=9;
$.get("${sm}/selectUser/"+id,{},function (data){
console.log(data);
});
});
java后端处理:
@RequestMapping(value = "/selectUser/{id}",method = RequestMethod.GET)
@ResponseBody
public User selectUser(@PathVariable(value = "id",required = true) int userId){
//获取数据(由于不连接数据库,此处数据脑补从数据库查询出来就好)
User user=new User();
user.setUserName("小刘");
user.setPassword("666");
return user;
}
2.post请求的实现(post请求的定义:新增数据)
JQ请求处理:
$("#btn2").click(function (){
$.post("${sm}/insertUser",{
userName:"1111",
password:"55"
},function (data){
console.log(data);
});
});
java后端处理:
@RequestMapping(value = "/insertUser",method = RequestMethod.POST)
@ResponseBody
public Boolean insertUser(User user){
//新增数据(由于不连接数据库,此处数据脑补新增结果就好)
return false;
}
3.put请求的实现(put请求的定义:修改(更新)数据)
JQ请求处理:
$("#btn3").click(function (){
//要修改的数据
var data={
userName:"1111",
password:"55"
};
//id
var id=8;
$.ajax({
type:"PUT",
url:"${sm}/updateUser/"+id,
data:data,
success:function (data){
console.log(data);
}
});
});
java后端处理:
@RequestMapping(value = "/updateUser",method = RequestMethod.PUT)
@ResponseBody
public Boolean updateUser(@PathVariable(value = "id",required = true) int userId,User user){
//更新数据(由于不连接数据库,此处数据脑补修改结果就好)
return false;
}
4.delete请求的实现(delete请求的定义:删除数据)
JQ请求处理:
var id=9;
$("#bt4").click(function (){
$.post("${sm}/deleteUser/"+id,{},function (data){
console.log(data);
});
});
java后端处理:
@RequestMapping(value = "/deleteUser",method = RequestMethod.DELETE)
@ResponseBody
public Boolean deleteUser(@PathVariable(value = "id",required = true) int userId){
//更新数据(由于不连接数据库,此处数据脑补修改结果就好)
return false;
}
可以发现后台是通过请求类型和请求的路径区分操作,也正是由于如此所以参数位置的对应是否十分重要的,因为并不是name:value的形式,所以从路径中取出参数时是依据位置进行匹配的,没有提到patch,但使用方法基本一样,大部分用的基本都是put
目前也是springMVC的新手一枚,刚刚摸到一点头绪,有问题还望指正…