由于客户端有很多种,如果为每一种客户端写一个程序会很麻烦,因此为服务器端设计了一个API,为各种各类型的客户端提供了一个访问服务器的接口.这就是restful.
作用:
restful主要用于前后端数据的传输.
负责
1.进行url地址的访问以及传递参数(多数情况使用复数形式)
2.管理请求方式(共有7中,常用的五种)
(1).get方式
用于查询
(2).post方式
创建资源
(3).put方式
修改全部
(4).patch方式
修改部分
(5).delete方式
删除
(6).head方式
获取资源的源数据
(7).option方式
获取一个客户端资源能够执行的方法
API:
应用程序编程入口
使用restful方式访问服务器:
首先在服务器端的方法上有与前面请求方式相对应的请求注解:
package cn.***.demo.controller;
import cn.***.demo.domain.Employee;
import cn.***.demo.utils.ResultBean;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/employees")
public class RestFullController {
@GetMapping
public ResultBean<Employee> list(){
List<Employee> list=new ArrayList<>();
Employee emp1 = new Employee();
emp1.setId(1L);
emp1.setName("mao1");
list.add(emp1);
Employee emp2 = new Employee();
emp2.setId(2L);
emp2.setName("mao2");
list.add(emp2);
return ResultBean.success(list);
}
//访问时需要传递两个参数,且参数在问号前面,相当于url地址
@GetMapping("/{id}/{name}")
public Employee get(@PathVariable Long id,@PathVariable String name){
System.out.println("id="+id);
Employee emp2 = new Employee();
emp2.setId(id);
emp2.setName(name);
return emp2;
}
//添加
//表示鼻祖有name参数,且页面必须带有token的请求才能访问改方法
@PostMapping(params = "name",headers = "token")
public ResultBean<Employee> save(){
Employee emp2 = new Employee();
emp2.setId(10L);
emp2.setName("mao10");
return ResultBean.success(emp2);
}
//put修改
@PutMapping("/{id}")
public ResultBean<Employee> update(@PathVariable Long id,String name,Integer age){
Employee emp2 = new Employee();
emp2.setId(id);
emp2.setName(name);
emp2.setAge(age);
return ResultBean.success(emp2);
}
//patch修改
@PatchMapping("/{id}")
public ResultBean<Employee> patch(@PathVariable Long id,String name,Integer age){
Employee emp2 = new Employee();
emp2.setId(id);
emp2.setName(name);
emp2.setAge(age);
return ResultBean.success(emp2);
}
//删除
@DeleteMapping("/{id}")
public ResultBean<Employee> delete(@PathVariable Long id){
Employee emp2 = new Employee();
emp2.setId(id);
emp2.setName("xka2");
return ResultBean.success(emp2);
}
}
在前端访问的时候使用ajax方式:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--导入jquery-->
<script src="js/jquery/jquery.min.js"></script>
</head>
<body>
<div id="app">
</div>
<script>
/*get请求*/
/*$.get("/employees",null,function (data) {
$("#app").html(data.data[0].name);
});*/
/*get传参请求*/
/*$.get("/employees/1/lalal",null,function (data) {
$("#app").html(data.name);
});*/
/*创建一个对象*/
/* $.post("/employees",null,function (data) {
$("#app").html(data.data.name);
});*/
/*修改,传递参数为100*/
/*$.ajax({
url:"/employees/100",
data:null,
success:function (data) {
console.log(data);
$("#app").html(data.data.id);
},
method:"PUT"
});*/
/*删除,传递参数为100*/
/*$.ajax({
url:"/employees/100",
data:null,
success:function (data) {
console.log(data);
$("#app").html("delete:"+data.msg);
},
method:"Delete"
});*/
/*创建对象.传递数据name,且带有页面数据token=1564156,请求方式为post*/
$.ajax({
url:"/employees",
data: {name:"maomaocong"},
beforeSend:function(request){
request.setRequestHeader("token","1564156");
},
success:function (data) {
console.log(data);
$("#app").html("save:"+data.data.name);
},
method:"post"
});
</script>
</body>
</html>