一.REST(表述性状态转移)
1.定义
REST(Representational State Transfer)是由 Roy Fielding 在 2000 年提出的一种软件架构风格,用于设计网络应用的通信模式。它基于 HTTP 协议,强调通过统一的接口(如标准 HTTP 方法)管理资源,实现客户端与服务器的解耦。
2.REST 的六大设计原则(约束)
(1)客户端-服务器分离
客户端处理用户界面和交互,服务器负责数据存储和业务逻辑。
资源导向:
资源:系统中可识别的实体(如用户、订单、文章),通过 URI(统一资源标识符)定位。
示例:
https://api.example.com/users/123 # 单个用户资源
https://api.example.com/posts # 文章集合资源
(2)统一接口(Uniform Interface)
资源通过 URI 标识,操作通过标准 HTTP 方法(GET、POST、PUT、DELETE)执行。
(3)无状态(Stateless)
每个请求包含完整的上下文信息,服务器不存储客户端状态。
优点:可扩展性强、易于缓存和负载均衡。
(4)可缓存(Cacheable)
响应需明确标识是否可缓存,减少重复请求。
(5)分层系统(Layered System)
客户端无需知道直接连接的服务器以外的层级(如代理、网关)。
(6)按需代码(Code-On-Demand,可选)
服务器可返回可执行代码(如 JavaScript)扩展客户端功能。
3.RESTful 定义
RESTful 是指符合 REST 架构风格的设计规范的应用或服务。
一个 API 或服务若遵循 REST 的六大约束,即可称为 RESTful API。
4.REST vs. RESTful
REST:理论架构风格。
RESTful:符合 REST 原则的具体实现(如大多数现代 Web API)。
注意:严格遵循 REST 所有原则的 API 较少,常见的是 “REST 风格” 或 “准 RESTful” 实现。
5.状态码
6.服务器框架
Python:Flask、Django REST Framework。
Java:Spring Boot、JAX-RS。
Node.js:Express、NestJS。
Go:Gin、Echo。
二.RESTful vs. SOAP/RPC