RESTful API 是一种软件架构风格,使用的 HTTP 格式请求,将 HTTP 请求规范化。主要用来前后端通讯,携带的数据大多为 json 格式。
# 设计理念
REST 即 Representational State Transfer 的缩写,或者叫做表现层状态转化。
如果一个架构符合 REST 原则,则称他为 RESTful 的构架。
- 资源与 URI 和 URL
表现层指的是资源的表现层,资源可以任何具体的信息,文本、音频、视频等。
URI,统一资源标识符,比较抽象的概念,用来表示唯一的一个资源
URL,统一资源定位器,比较具体,用来定位某个特定的资源
- 表现层
资源具体呈现出的形式叫做表现层。例如:文本可以用纯文本、HTML、XML、JSON 等格式,图片可以用 jpg、png 等格式。
- 状态转移
http 协议是一个无状态协议,这意味着所有状态药保存在服务器端,因此必须通过某种手段,让服务器发送状态转化。
通常用四个动作来实现转化:
- GET:获取资源
- POST:新建资源(也可用来更新)
- PUT:更新资源
- DELETE:删除资源
- 六项设计原则
- 统一的接口
包括客户端和服务端的接口,解耦了系统构架,让服务端和客户端可以独立升级 - 无状态
客户端每次请求和服务端每次返回信息应该是自包含的,避免某次请求要依赖前一次请求。 - 可缓存
客户端可缓存,以减小服务端压力 - C/S 分离
统一的接口将客户端与服务器分开。这种关注点分离意味着,例如,客户端不关心数据存储,数据存储保留在每个服务器内部,从而提高了客户端代码的可移植性。服务器不关心用户界面或用户状态,因此服务器可以更简单且更具可扩展性。服务器和客户端也可以更换,独立开发,只要不改变接口即可。 - 分层系统
客户端和服务端不是直接连接,而是通过中间服务器。中间服务器可以通过启用负载平衡和提供共享缓存来提高系统可扩展性。分层系统还可以强制执行安全策略。 - 按需编码
两端只通过统一的接口进行通讯,两端都可用任何喜欢的编程语言编码。
# 关注要素
- 端点 - URL
- 请求方法:GET、POST、PUT、DELETE
- 头部信息 - Request, Response
- 请求数据 - 需要发送给服务的具体数据