文章目录
前言
我们的项目是前后端分离的项目,而前后端分离的项目中,很重要的一块是前后端项目数据的交互。在项目中,我们可以使用ResultFul规范来编写统一的前后端交互接口,即我们之前所写的Controller。
一、 什么是Restful
Restful【规范】是一种面向资源的架构风格,可以简单理解为:使用URL名词定位资源,用HTTP动词【GET,POST,DELETE,PUT,PATCH】描述操作。客户端使用GET,POST,PUT,DELETE,PATCH来表示操作方式的动词对服务端资源进行操作。一般情况下:
GET:获取资源
POST:添加资源【也可以用于更新资源】
PUT:更新资源【也可以用于添加资源】
DELETE:用来删除资源
PATCH:用来做批量操作
注意:get请求是将参数放在地址栏。post,put,patch是将参数放在请求体【requestBody】。一般传一个参数可以用get,delete,多个参数用post,put,patch。
二、Restful案例
反例:GET /getDept/1 : url中不应该有动词
正例:GET /dept/1
注意:区分一个请求是不是相同的请求:请求地址 + 请求方式
注意:如果一个类中接口过多,是可以通过多加层级用于区分不同的请求。例如
POST http://localhost:8080/shop - 添加店铺信息 POST http://localhost:8080/shop/settlement - 店铺入驻 POST http://localhost:8080/shop/importExcel - 导入Excel
三、Restful的优势
1. 拥有http的优点:本身就是http,无状态,不用关心两次访问上下文,不像重定向和转发需要关注当前路径。 2. 充分利用HTTP协议本身语义:原来只用get,post,现在还要用delete和put,patch。
四、传输和接收数据
前端传输数据 | 后端匹配请求 + 接收数据 |
---|---|
GET http://localhost/dept/1 | @GetMapping("/dept/{id}") + @PathVariable("id") Long id |
Post http://localhost/dept - 对象:{} | @PostMapping("/dept") + @RequestBody Dept dept |
复杂表单数据【文件上传】name="file" | @PostMapping("/dept") + @RequestPart("file") MultipartFile file |
五、常用注解介绍
@GetMapping | 等价于:@RequestMapping( method = {RequestMethod.GET} ) |
---|---|
@PostMapping | 等价于:@RequestMapping( method = {RequestMethod.POST} ) |
@PathVariable | 从路径中获取变量 |
@RequestBody | 从请求体【请求数据包中】中获取数据 |
@RequestPart | 获取复杂表单数据或获取二进制文件数据 |