目录
RESTful接口风格
传统接口设计
RESTful接口设计
HTTP响应状态码
资源表现形式
RESTfu接口简化设计
RESTful接口风格
目的是开发一套规范科学的API,
下面不同开发者对同一接口的设计不统一
新增员工:
http://localhost/employee/save
http://localhost/employee/add
http://localhost/emoloyee/new
为避免这样的问题,使用RESTful风格的API接口
RESTful风格是一种设计API接口规则,因具有简单、易读、易用的特点,在web项目中广受欢迎
传统接口设计
@Controller
public class EmployeeController{@RequestMapping("/employee/list")public String list(Model model){model.addAttribute("list",employeeService.list())return "employee/list";}
}
-
请求路径:@RequestMapping("/employee/list")
-
请求方式:传统模式忽略请求方式,用RequestMapping可以通用处理,具体任务命名较乱
-
请求参数:由需求决定
-
请求响应:模板路径/ 由需求决定
RESTful接口设计
请求路径:由操作的资源决定,一般采用资源名称复数形式
比如接口操作对象是员工,路径可以设为:/employees
@Controller
public class EmployeeController{@RequestMapping(value="/employees",method=RequestMethod.GET)@ResponseBodypublic List<Employee> list(){return employeeService.list();}
}
请求方法:由当前接口对资源的操作决定,在HTTP请求方法上做规定
GET:从服务器取出资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源
DELETE:在服务器删除资源
GET/zoos
POST/zoos
GET/zoos
PUT/zoos/{id}
DELETE/zoos/{id}
请求参数:根据接口功能而定,由需求决定
GET/collection:返回资源对象的列表
GET/collection/resource:返回单个资源对象
POST/collection:返回新生成的资源对象
PUT/collection/resource:返回完整的资源对象
DELETE/collection/resource:返回一个空文档
以上返回数据均使用JSON格式
HTTP响应状态码
200 OK - [GET]:服务器成功返回用户请求的数据
201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功
202 Accepted - []:表示一个请求已经进入后排队(异步任务)
400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出请求有错误
资源表现形式
文本可以用txt格式表现,也可以用HTML格式,XML格式,json格式表现,甚至可以采用二进制格式
图片可以用JPG格式表现,也可以用PNG格式表现
它的具体表现形式应在HTTP请求的头信息中用Accept和Content-type字段指定
accept:application/json
content-type:application/json
Accept与Content-type的区别
-
接受属于请求头,内容类型属于实体头
Http报头分为通用报头,请求报头,响应报头和实体报头
请求方的http报头结构:通用报头|请求报头|实体报头
响应方的http报头结构:通用报头|响应报头|实体报头
-
Accept代表发送端(客户端)希望接受的数据类型
比如:Accept:application /json,代表客户端希望接受的数据类型是json类型,后台返回json数据
-
Content-type代表发送端(客户端|服务器)发送的实体数据的数据类型
比如:- type: application / json,代表发送端发送的数据格式是json,后台就要以这种格式来接收前端发过来的数据
RESTfu接口简化设计
-
在项目最上端,使用RequestMapping抽取共有路径
-
使用@GetMapping、@PostMapping等代替项目中@RequestMapping(method=RequestMethod.POST/GET/xxx)
-
@RestController等价于@Controller+@ResponseBody
课程:https://www.bilibili.com/video/BV1Ps4y1J7Ve