自学内容网 自学内容网

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风格对比

查询传统RESTfulREST后台接收
查询所有/student/list/studentsGetMapping(“/students”)
查询单个/student/list?id=1/students/1GetMapping(“/students/{id}”) 方法入参加上@PathVariable(“id” Long id)
添加传统RESTfulREST后台接收
添加/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,还有xmltxtimage等等,都是资源的表现形式,客户端与服务器通过资源的这些表现形式进行通信
  • 状态转移(State Transfer):笼统的讲,REST中的状态转移更多的描述的是服务器端资源的状态,客户端与服务器之间的交互是通过对资源的状态进行变化来实现的,客户端发送请求对资源进行操作,服务器根据请求的方法来执行相应的操作,并返回新的资源状态给客户端。也就是通过HTTP Method来实现状态的转移。

总结一下,RESTful就是:

  1. 每个URI代表一种资源;
  2. 客户端和服务器之间,传递这种资源的某种表现形式,比如JSONtxt
  3. 客户端通过特别的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&param2=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)!