API开发与设计 dev-api-design

本技能用于设计、实现和文档化生产级API,覆盖REST、GraphQL、gRPC和tRPC,涉及API架构、OpenAPI规范、版本控制、认证授权、错误处理等,适用于后端开发和系统集成。关键词:API设计,RESTful,GraphQL,gRPC,tRPC,OpenAPI,文档化,后端开发,微服务。

后端开发 0 次安装 0 次浏览 更新于 3/7/2026

name: dev-api-design description: 用于REST、GraphQL、gRPC和tRPC的生产级API设计模式。涵盖API架构、OpenAPI/Swagger规范、版本控制/废弃、认证/授权、速率限制、分页、错误模型、合同测试和开发者文档。

API开发与设计 — 快速参考

使用此技能来设计、实现和文档化生产级API(REST、GraphQL、gRPC和tRPC)。应用于合同设计(OpenAPI)、版本控制/废弃、认证/授权、速率限制、分页、错误模型和开发者文档。

现代最佳实践(2026年1月):HTTP语义和可缓存性(RFC 9110)、问题详情错误模型(RFC 9457)、OpenAPI 3.1+、合同优先 + 破坏性变更检测、强认证/授权边界、显式版本控制/废弃、默认可操作的API(幂等性、速率限制、可观察性、跟踪上下文)。


默认执行清单

  • 基于约束选择API风格(公开 vs 内部、性能、客户端查询灵活性)。
  • 首先定义合同(OpenAPI或GraphQL模式;gRPC使用protobuf)。
  • 定义错误模型(RFC 9457 + 稳定错误代码 + 跟踪ID)。
  • 定义认证/授权边界(范围/角色/租户)和威胁模型。
  • 为所有列表端点定义分页/过滤/排序。
  • 定义速率限制/配额、幂等性策略(特别是POST)和重试/退避指导。
  • 定义可观察性(W3C跟踪上下文、请求ID、指标、日志)和服务水平目标。
  • 在CI中添加合同测试 + 破坏性变更检查。
  • 发布包含示例 + 迁移/废弃政策的文档。

快速参考

任务 模式/工具 关键元素 何时使用
设计REST API RESTful设计 名词(非动词)、HTTP方法、适当状态码 资源型API、CRUD操作
版本API URL版本控制 /api/v1/resource/api/v2/resource 破坏性变更、客户端迁移
分页结果 游标分页 cursor=eyJpZCI6MTIzfQ&limit=20 实时数据、大型集合
处理错误 RFC 9457问题详情 typetitlestatusdetailerrors[] 一致的错误响应
认证 JWT承载令牌 Authorization: Bearer <token> 无状态认证、微服务
速率限制 令牌桶算法 X-RateLimit-*头部、429响应 防止滥用、公平使用
文档化API OpenAPI 3.1 Swagger UI、Redoc、代码示例 交互式文档、客户端SDK
灵活查询 GraphQL 模式优先、解析器、DataLoader 客户端驱动的数据获取
高性能 gRPC + Protobuf 二进制协议、流式处理 内部微服务
TypeScript优先 tRPC 端到端类型安全、无需代码生成 单体仓库、内部工具
AI智能体API REST + MCP 智能体体验、机器可读 LLM/智能体消费

决策树:选择API风格

用户需求:[API类型]
    ├─ 面向第三方的公开API?
    │   └─ 带OpenAPI文档的REST(广泛兼容性)
    │
    ├─ 内部微服务?
    │   ├─ 需要高吞吐量? → **gRPC**(二进制、快速)
    │   └─ 简单CRUD? → **REST**(易于调试)
    │
    ├─ TypeScript单体仓库(前端 + 后端)?
    │   └─ **tRPC**(端到端类型安全、无需代码生成)
    │
    ├─ 客户端需要灵活查询?
    │   ├─ 实时更新? → **GraphQL订阅**或**WebSockets**
    │   └─ 复杂数据获取? → **GraphQL**(避免过度获取)
    │
    ├─ 移动/Web客户端?
    │   ├─ 多种实体类型? → **GraphQL**(单端点)
    │   └─ 简单资源? → **REST**(可缓存)
    │
    ├─ AI智能体消费API?
    │   └─ REST + **MCP**包装器(智能体体验)
    │
    └─ 流式或双向?
        └─ **gRPC**(HTTP/2流式)或**WebSockets**

导航:核心API模式

RESTful API设计

资源: references/restful-design-patterns.md

  • 资源型URL与适当HTTP方法(GET、POST、PUT、PATCH、DELETE)
  • HTTP状态码语义(200、201、404、422、500)
  • 幂等性保证(GET、PUT、DELETE)
  • 无状态设计原则
  • URL结构最佳实践(集合 vs 资源端点)
  • 嵌套资源和操作端点

分页、过滤和排序

资源: references/pagination-filtering.md

  • 偏移分页(简单、静态数据集)
  • 游标分页(实时流、推荐)
  • 页码分页(带页码的UI)
  • 带操作符的查询参数过滤(_gt_contains_in
  • 带方向的多字段排序(-created_at
  • 带索引的性能优化

错误处理

资源: references/error-handling-patterns.md

  • RFC 9457问题详情标准
  • HTTP状态码参考(4xx客户端错误、5xx服务器错误)
  • 字段级验证错误
  • 调试的跟踪ID
  • 跨端点一致的错误格式
  • 生产环境中的安全错误消息(无堆栈跟踪)

认证和授权

资源: references/authentication-patterns.md

  • JWT(JSON Web令牌)与刷新令牌轮换
  • OAuth2授权码流用于第三方认证
  • API密钥认证用于服务器到服务器
  • RBAC(基于角色的访问控制)
  • ABAC(基于属性的访问控制)
  • 基于资源的授权(用户拥有的资源)

速率限制和节流

资源: references/rate-limiting-patterns.md

  • 令牌桶算法(推荐,允许突发)
  • 固定窗口 vs 滑动窗口
  • 速率限制头部(X-RateLimit-*
  • 分层速率限制(免费、付费、企业版)
  • 基于Redis的分布式速率限制
  • 按用户、按端点、按API密钥的策略

导航:扩展资源

API设计和最佳实践

GraphQL和gRPC

tRPC(TypeScript优先)

  • trpc-patterns.md - 端到端类型安全、程序、React Query集成
    • 何时使用tRPC vs GraphQL vs REST
    • 认证中间件模式
    • 使用Next.js的服务器端渲染

OpenAPI和文档化

可选:AI/自动化(LLM/智能体API)


导航:模板

生产就绪、可直接复制的API实现,包含认证、数据库、验证和文档。

框架特定模板

跨平台模式


做 / 避免

好:做

  • 从一开始就版本化API
  • 在首次废弃前文档化废弃政策
  • 将破坏性变更视为主要版本(并保持次要变更向后兼容)
  • 在所有错误响应中包含跟踪ID
  • 返回适当的HTTP状态码
  • 实现带清晰头部的速率限制
  • 使用RFC 9457问题详情处理错误

坏:避免

  • 无废弃期移除字段
  • 更改现有版本中的字段类型
  • 在资源名中使用动词(仅名词)
  • 为客户端错误返回500
  • 无主要版本号的破坏性变更
  • 无显式隔离混合租户数据
  • 到处使用操作端点(/doSomething)

反模式

反模式 问题 修复
即时废弃 破坏客户端 至少90天弃用期
操作端点 不一致的API 使用资源 + HTTP动词
版本在正文中 难以路由、调试 版本在URL或头部中
通用错误 开发者体验差 特定错误代码 + 消息
无速率限制头部 客户端无法退避 包含X-RateLimit-*
仅URL中租户ID 伪造风险 针对认证令牌验证
泄漏抽象 紧耦合 设计稳定合同

可选:AI/自动化

注意:AI工具辅助但合同需要人工审核。

  • OpenAPI代码检查 — CI/CD中的Spectral、Redocly
  • 破坏性变更检测 — oasdiff自动检查
  • SDK生成 — 从变更的OpenAPI规范
  • 合同测试 — Pact、Dredd自动化

有界声明

  • AI生成的OpenAPI规范需要人工审核
  • 自动化废弃检测需要手动确认
  • SDK生成需要类型验证

外部资源

data/sources.json获取:

  • 官方REST、GraphQL、gRPC文档
  • OpenAPI/Swagger工具和验证器
  • API设计风格指南(谷歌、微软、Stripe)
  • 安全标准(OWASP API安全前十)
  • 测试工具(Postman、Insomnia、Paw)

相关技能

此技能与其它专业技能结合使用效果最佳:

后端开发

  • software-backend - 生产后端模式(Node.js、Python、Java框架)
    • 当实现API服务器基础设施时使用
    • 涵盖数据库集成、中间件、错误处理

安全和认证

  • software-security-appsec - 应用安全模式
    • 关键用于保护API端点
    • 涵盖OWASP漏洞、认证流、输入验证

数据库和数据层

  • data-sql-optimization - SQL优化和数据库模式
    • API性能必需(查询优化、索引)
    • 当API与关系数据库交互时使用

测试和质量

  • qa-testing-strategy - 测试策略和自动化
    • API规范的合同测试
    • API端点的集成测试

DevOps和部署

文档化

  • docs-codebase - 技术文档标准
    • API参考文档结构
    • 补充OpenAPI自动生成文档

架构

性能和可观察性

  • qa-observability - 性能优化和监控
    • API延迟监控、分布式跟踪
    • API端点的性能预算

使用说明

对于智能体:

  • 默认应用RESTful原则,除非用户请求GraphQL/gRPC
  • 总是为列表端点包含分页
  • 使用RFC 9457格式处理错误响应
  • 在所有模板中包含认证(JWT或API密钥)
  • 参考框架特定模板获取完整实现
  • 链接到相关资源获取深入指导

成功标准: API可发现、一致、文档化良好、安全,并正确遵循HTTP/GraphQL语义。


时间敏感建议

如果用户询问“最佳”工具/框架、“最新”标准,或某事物在2026年是否仍然相关,请使用当前环境中可用的任何浏览/搜索工具快速进行网络搜索。如果无法访问网络,请从稳定原则回答,说明假设(流量、延迟、团队技能、生态系统),并避免过度强调时效性。