RESTful API——构建现代Web服务的基石
RESTful API
什么是API
API即为Application Programming interface,也就是应用程序编程接口。
我们进行后端开发时,主要的工作就是为前端或者其他后端服务提供对应的API。
笼统来讲,API就像程序与程序间通信的桥梁
什么是RESTful API
RESTful API又叫REST API,是基于REST构建的API。
RESTful API 可以让你看到 URL+Http Method 就知道这个 URL 是干什么的,让你看到了 HTTP 状态码(status code)就知道请求结果如何,简单、易读、易用
比如
GET /classes获取所有班级
POST /classes新增一个班级
传统格式和RESTful API风格对比
查询 | 传统 | RESTful | REST后台接收 |
---|---|---|---|
查询所有 | /student/list | /students | GetMapping(“/students”) |
查询单个 | /student/list?id=1 | /students/1 | GetMapping(“/students/{id}”) 方法入参加上@PathVariable(“id” Long id) |
添加 | 传统 | RESTful | REST后台接收 |
---|---|---|---|
添加 | /student/add | /students | @PostMapping(“/students”)方法入参加上@RequestBody Student student |
修改、删除就不做演示了
显然,REST风格的URL更加简单,我们通过HTTP Method + URL就可以知道是干什么的
关于REST
REST是REST API的基础,REST全称是Resource Representation State Tranfer,即资源表现形式状态转移,直白的讲,就是资源在网络中以某种“表现形式”进行“状态转移”。
- 资源(Resource):把真实的对象数据称为资源,REST是面向资源的,所有的数据和功能都被视为资源。每个资源都有一个唯一的标识符(URI),我们可以通过访问URI来获取相应的资源;此外,资源也可以包含子资源,比如
classes/{id}/teachers
,就表示某id的班级下的所有教师。 - 表现形式(Representational):资源是一个实体,可以有多种表现形式,比如常用的
JSON
,还有xml
、txt
、image
等等,都是资源的表现形式,客户端与服务器通过资源的这些表现形式进行通信 - 状态转移(State Transfer):笼统的讲,REST中的状态转移更多的描述的是服务器端资源的状态,客户端与服务器之间的交互是通过对资源的状态进行变化来实现的,客户端发送请求对资源进行操作,服务器根据请求的方法来执行相应的操作,并返回新的资源状态给客户端。也就是通过HTTP Method来实现状态的转移。
总结一下,RESTful就是:
- 每个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现形式,比如
JSON
、txt
; - 客户端通过特别的HTTP动词(GET、POST、PUT、PATCH、DELETE等)对服务器端资源进行操作,实现"表现层状态转化"。
REST的核心特点
- 基于HTTP协议:RESTful架构基于HTTP协议进行通信,使用HTTP方法(如GET、POST、PUT、DELETE等)对资源进行操作。
- 无状态(Stateless):RESTful架构是一种状态无关的架构,即每个请求都包含足够的信息,使服务器能够理解和处理请求,而不需要依赖之前的请求或会话信息。
- 统一接口(Uniform Interface):RESTful架构使用统一的接口定义方式,包括使用HTTP方法对资源进行操作,以及使用URL作为资源的标识符。这样可以简化系统的设计和实现,并提高系统的可扩展性和可重用性。
- 分层系统(Layered System):RESTful架构允许系统由多个层次组成,每一层都可以对请求进行不同的处理,如安全认证、负载均衡等。
RESTful API规范
动作
GET
:请求从服务器获取特定资源。举个例子:GET /classes
(获取所有班级)POST
:在服务器上创建一个新的资源。举个例子:POST /classes
(创建班级)PUT
:更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /classes/12
(更新编号为 12 的班级)DELETE
:从服务器删除特定的资源。举个例子:DELETE /classes/12
(删除编号为 12 的班级)PATCH
:更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),使用的比较少,这里就不举例子了。
路径(接口命名)
路径又称"终点"(endpoint),表示 API 的具体网址。常见的规范如下:
- URI中不能有动词,只能有名词:因为每种URI表示一种资源,所以URI中不能有动词,此外,URI中的名词也可能是一个集合,所以可以是复数。如果 API 调用并不涉及资源(如计算,翻译等操作)的话,可以用动词。比如:
GET /calculate?param1=11¶m2=33
- 不用大写字母,建议用中杠 - 不用下杠 _:比如邀请码写成
invitation-code
而不是 invitation_code 。 - 接口尽量使用名词,避免使用动词。 RESTful API 操作(HTTP Method)的是资源(名词)而不是动作(动词)。
例如:
GET /classes:列出所有班级
POST /classes:新建一个班级
GET /classes/{classId}:获取某个指定班级的信息
PUT /classes/{classId}:更新某个指定班级的信息(一般倾向整体更新)
PATCH /classes/{classId}:更新某个指定班级的信息(一般倾向部分更新)
DELETE /classes/{classId}:删除某个班级
GET /classes/{classId}/teachers:列出某个指定班级的所有老师的信息
GET /classes/{classId}/students:列出某个指定班级的所有学生的信息
DELETE /classes/{classId}/teachers/{ID}:删除某个指定班级下的指定的老师的信息
反例:
/getAllclasses
/createNewclass
/deleteAllActiveclasses
理清资源的层次结构,比如业务针对的范围是学校,那么学校会是一级资源:/schools
,老师: /schools/teachers
,学生: /schools/students
就是二级资源
状态码
状态码范围:
2xx:成功 | 3xx:重定向 | 4xx:客户端错误 | 5xx:服务器错误 |
---|---|---|---|
200 成功 | 301 永久重定向 | 400 错误请求 | 500 服务器错误 |
201 创建 | 304 资源未修改 | 401 未授权 | 502 网关错误 |
403 禁止访问 | 504 网关超时 | ||
404 未找到 | |||
405 请求方法不对 |
总结
RESTful API作为一种现代Web服务的构建方式,具有可扩展性、灵活性、高性能和标准化等优势。通过遵循REST的设计原则和规范,以及采用合适的实现方法和最佳实践,我们可以构建出高效、可靠和易于维护的RESTful API。这些API将成为不同系统之间数据交换的桥梁,推动现代Web应用程序的发展和创新。
原文地址:https://blog.csdn.net/qq_51321722/article/details/143619070
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!