KeyWords:
- 统一机制来方便前端设备和后台通信.
- Restful API 是一套较为成熟的互联网应用程序API设计理论.
基本概念
RESTful架构:Representational State Transfer
REST省略了主语资源Resources,可以将rest理解为资源的表现层状态转换。
- Resources:
- 网络的实体,或者说是网络上传递的信息。可以用URI去唯一的定义一种资源。要想访问该资源,那么访问该资源的URI即可。
- Representation:
- resources有着多种表现方式,而把资源呈现出来的形式就叫做“表现层”;
- 比如文字可以用txt,docx,xml,json等形式展现。
- State Transfer:
- 如果客户端想要操作服务器,必须通过某种手段,让服务器端发生”状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是”表现层状态转化”。
- HTTP协议中的GET,POST,PUT,DELETE。
设计原则:
- 不包含动词,需要名词形式。(推荐复数形式)
错误的例子:
- /getProducts
- /listOrders
正确的例子:将动作形式写进HTTP协议中.
GET /products
POST /products
GET /products/1
REST架构风格最重要的约束:
- 客户-服务器(Client-Server)
- 通信只能由客户端单方面发起,表现为请求-响应的形式。
- 无状态(Stateless)
- 通信的会话状态(Session State)应该全部由客户端负责维护。
- 缓存(Cache)
- 响应内容可以在通信链的某处被缓存,以改善网络效率。
- 统一接口(Uniform Interface)
- 通信链的组件之间通过统一的接口相互通信,以提高交互的可见性。
- 分层系统(Layered System)
- 通过限制组件的行为(即每个组件只能“看到”与其交互的紧邻层),将架构分解为若干等级的层。
- 按需代码(Code-On-Demand,可选)
REST的优点
- 可更高效利用缓存来提高响应速度
- 通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
- 浏览器即可作为客户端,简化软件需求
- 相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
- 不需要额外的资源发现机制
- 在软件技术演进中的长期的兼容性更好
ref: