RESTful 架构风格:设计原则与最佳实践
Executive Summary
核心观点(金字塔原理)
结论先行: RESTful架构的核心设计原则是”用URI定位资源,用HTTP方法描述操作”,实现资源的统一接口访问。
支撑论点:
- REST的四大核心特点:资源、统一接口、URI和无状态
- 每个URI代表一种资源,客户端通过HTTP动词对资源进行操作
- URI应使用名词复数形式,避免包含动词,动作应体现在HTTP方法中
SWOT 分析
| 维度 | 分析 |
|---|---|
| S 优势 | 接口统一规范、无状态易于扩展、语义清晰、符合HTTP协议设计理念 |
| W 劣势 | 对复杂操作表达能力有限、需要团队统一理解和遵守规范 |
| O 机会 | 微服务架构、开放API平台、前后端分离项目 |
| T 威胁 | 设计不规范可能导致URI包含动词等常见错误 |
适用场景
- Web API接口设计
- 微服务间的通信协议规范
- 面向资源的系统架构设计
RESTful架构风格
REST即Representational State Transfer的缩写,可译为”表现层状态转化”。REST最大的几个特点为:资源、统一接口、URI和无状态。
RESTful架构就是用URI定位资源,用HTTP方法描述操作。
资源
- 资源常见的载体为json、面向用户的一组数据集,
综合上面的解释,总结一下什么是RESTful架构:
- 每一个URI代表一种资源;
- 客户端和服务器之间,传递这种资源的某种表现层;
- 客户端通过几个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。
RESTful设计误区
- 最常见的一种设计错误,就是URI包含动词。因为”资源”表示一种实体,所以应该是名词,且为复数形式,URI不应该有动词,动词应该放在HTTP协议中。
举例:
- GET /collection:返回资源对象的列表(数组)
- GET /collection/resource:返回单个资源对象
- POST /collection:返回新生成的资源对象
- PUT /collection/resource:返回完整的资源对象
- PATCH /collection/resource:返回完整的资源对象
- DELETE /collection/resource:返回一个空文档