1API Design Patterns

API设计基础

设计原则

API设计一致性向后兼容版本管理

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第1章:API设计基础(API Design Foundations)

一、导读

1.1 本章学习目标

第1章建立 API 设计的基础框架——一致性、向后兼容、版本管理。

本章的核心学习目标包括:

  • 理解 API 设计的基本原则
  • 掌握一致性的重要性
  • 学会向后兼容的设计策略
  • 理解版本管理的最佳实践

1.2 为什么本章如此重要

API 是系统之间的契约。一旦发布,修改 API 的成本极高。好的 API 设计能减少未来的痛苦,坏的设计会导致永久的技术债务。

1.3 核心问题引导

API 设计最重要的原则是什么?

如何做到向后兼容?

什么时候需要版本管理?

好的 API 命名有什么特点?


二、核心概念详解

2.1 设计原则

API 设计原则:

1. 一致性:相同的操作使用相同的模式
2. 简单性:减少认知负担
3. 可发现性:通过 API 本身能理解用法
4. 安全性:默认安全,防止常见错误
5. 可扩展性:允许未来添加功能

2.2 向后兼容

向后兼容规则:

1. 永远不要删除已有的字段
2. 永远不要改变已有字段的类型
3. 永远不要改变已有字段的行为
4. 新增字段必须是可选的(或有默认值)
5. 新增方法不能影响已有方法

不兼容变更的处理:
- 废弃旧版本,提供迁移期
- 使用版本号区分
- 提供迁移工具

2.3 版本管理

版本管理策略:

1. URL 版本:/api/v1/users
   - 优点:直观,易于路由
   - 缺点:URL 不统一

2. Header 版本:Accept: application/vnd.api.v1+json
   - 优点:URL 干净
   - 缺点:不够直观

3. 无版本:通过向后兼容避免版本
   - 优点:最简单
   - 缺点:需要严格遵守兼容规则

推荐:优先向后兼容,必要时使用 URL 版本

2.4 命名规范

资源命名:
- 使用复数名词:/users, /orders
- 使用 kebab-case:/order-items
- 避免动词:/users(GET)而不是 /getUsers

字段命名:
- 使用 camelCase:firstName, orderDate
- 保持一致:不要混用 camelCase 和 snake_case
- 使用有意义的名称:userEmail 而不是 email(在嵌套时)

三、实战案例

3.1 案例一:设计一个用户管理 API

资源设计:
GET    /api/v1/users          # 列表
POST   /api/v1/users          # 创建
GET    /api/v1/users/{id}     # 获取
PATCH  /api/v1/users/{id}     # 部分更新
DELETE /api/v1/users/{id}     # 删除

请求/响应示例:

POST /api/v1/users
{
  "name": "Alice",
  "email": "alice@example.com"
}

Response 201:
{
  "id": "usr_123",
  "name": "Alice",
  "email": "alice@example.com",
  "createdAt": "2024-01-01T00:00:00Z"
}

四、本章小结

设计原则:一致性、简单性、可发现性、安全性、可扩展性。

向后兼容:不删除字段、不改变类型和行为。

版本管理:优先向后兼容,必要时使用 URL 版本。

命名规范:复数名词、camelCase、有意义的名称。


五、思考与练习

设计一个图书管理 API,遵循本章的设计原则。

分析一个你熟悉的 API,找出它的向后兼容问题。

如何在不破坏向后兼容的前提下添加必填字段?


1/7API设
0%