REST 不是“某个具体框架”,而是一套架构约束。这些约束相互关联,合在一起能带来可伸缩性、可缓存性、松耦合和可演化的系统。
REST 的六大约束:
1. Client‑Server(客户端-服务器分离):界面和数据处理分离,便于扩展与复用。
2. Stateless(无状态):每次请求都应包含处理所需的全部信息,服务器不保存会话状态,使用 JWT、OAuth token、API key。
3. Cacheable(可缓存):响应可显式标记为可缓存或不可缓存,提高效率并减轻负载。
4. Layered System(分层系统):系统可通过中间层(如负载均衡、反向代理、网关、缓存、验证层、后端服务)组织,客户端不必知道具体后端细节。
5. Code‑on‑Demand(按需下发代码,可选):服务器可临时下发可执行代码(如 JavaScript)以扩展客户端功能。
6. Uniform Interface(统一接口):标准化的接口(资源、表示、URI、HTTP 方法),降低耦合并便于演化。
API 设计与使用实践:
1. Protocols:始终使用 HTTPS 保证安全与数据隐私。
2. Sub‑domain:常用子域名(如 api.example.com)来承载 API。
3. Versioning:给 API 版本(如 /v1)以便变更时保持向后兼容。
4. Endpoint:用名词表示资源路径(/users、/orders),路径应直观符合 REST 原则。
5. HTTP Methods:语义化使用方法:GET(安全、幂等,获取)、POST(创建/不可幂等)、PUT(更新/全量替换/幂等)、PATCH(部分更新/非必幂等)、DELETE(删除/幂等)。
6. Filtering:通过查询参数过滤结果(如 ?age=18&gender=male)。
7. Pagination:通过 page、limit 或类似参数进行分页(如 &page=1&limit=10)以分块返回大数据集。
#API开发日常