mcpField
A
api-versioning-strategy

api-versioning-strategy

github.com/aj-geddes开发373469 次安装34 周前更新
代码仓库

关于 api-versioning-strategy

面向 API 设计与维护人员的 REST、GraphQL 和 gRPC 版本管理指南,涵盖兼容性、弃用与迁移规划,并提供实现参考。

主要功能

  1. 01API 版本策略
  2. 02向后兼容模式
  3. 03弃用与迁移规划
  4. 04版本路由与检测
  5. 05多版本测试指南

适用场景

  1. 01为新 API 设计版本方案
  2. 02规划破坏性变更与迁移
  3. 03逐步弃用旧 API 版本

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill api-versioning-strategy

安装后在 Claude Code 中输入/api-versioning-strategy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
backward-compatibility-patterns.md
date-format.md
deprecation-strategy.md
graphql-versioning.md
grpc-versioning.md
javascripttypescript.md
migration-guide-example.md
pattern-1-version-agnostic-core.md
response-structure.md
testing-multiple-versions.md
version-detection-routing.md
versioning-approaches.md
scripts/
validate-api.sh
templates/
api-scaffold.yaml

详细介绍

API 版本管理策略

目录

概述

全面介绍 REST API、GraphQL 和 gRPC 服务的 API 版本管理方法、弃用策略、向后兼容技术和迁移规划。

适用场景

  • 从一开始就为新 API 设计版本管理
  • 为现有 API 添加不兼容变更
  • 弃用旧版 API
  • 规划 API 迁移
  • 确保向后兼容
  • 同时管理多个 API 版本
  • 为不同版本编写 API 文档
  • 实现 API 版本路由

快速开始

最小可运行示例:

// express-router.ts
import express from "express";

const app = express();

// Version 1
app.get("/api/v1/users", (req, res) => {
  res.json({
    users: [{ id: 1, name: "John Doe" }],
  });
});

// Version 2 - Added email field
app.get("/api/v2/users", (req, res) => {
  res.json({
    users: [{ id: 1, name: "John Doe", email: "[email protected]" }],
  });
});

// Shared logic with version-specific transformations
app.get("/api/:version/users/:id", async (req, res) => {
  const user = await userService.findById(req.params.id);

  if (req.params.version === "v1") {
    res.json({ id: user.id, name: user.name });
// ... (see reference guides for full implementation)

参考指南

references/ 目录中的详细实现:

指南内容
版本管理方法版本管理方法
向后兼容模式向后兼容模式
弃用策略弃用策略
迁移指南示例迁移指南示例
响应结构响应结构
日期格式日期格式、错误格式
JavaScript/TypeScriptJavaScript/TypeScript、Python
GraphQL 版本管理GraphQL 版本管理
gRPC 版本管理gRPC 版本管理
版本检测与路由版本检测与路由
测试多个版本测试多个版本
模式 1:版本无关的核心模式 1:版本无关的核心、模式 2:用于渐进式发布的功能标志、模式 3:API 版本指标

最佳实践

✅ 应该做
  • 从第一天起就进行版本管理(即使是 v1)
  • 记录不兼容和兼容变更
  • 提供清晰的迁移指南,并附上代码示例
  • 遵循语义化版本原则
  • 提前 6-12 个月发出弃用通知
  • 监控已弃用 API 的使用情况
  • 向 API 使用者发送弃用警告
  • 至少同时支持 2 个版本
  • 使用适配器/转换器处理版本逻辑
  • 测试所有受支持的版本
  • 记录正在使用的 API 版本
  • 尽可能提供迁移工具
  • 保持版本管理方法一致
❌ 不应该做
  • 不进行版本管理就更改 API 行为
  • 不事先通知就移除版本
  • 支持过多版本(>3)
  • 在同一个 API 中采用不同的版本管理策略
  • 不提升版本号就破坏 API
  • 忘记更新文档
  • 过快弃用(<6 个月)
  • 忽视 API 使用者的反馈
  • 把每项变更都作为新版本
  • 不一致地使用版本号

评论

支持 Markdown