mcpField
A
api-versioning

api-versioning

github.com/rrezartprebreza开发33852 次安装今天更新
代码仓库

关于 api-versioning

api-versioning 是面向 Boot 3 和 Framework 6 的 API 版本管理指导技能,帮助选择并维护明确的版本策略。内容涵盖路由、文档、弃用流程和契约测试,并要求将版本逻辑留在 Web 边界。

主要功能

  1. 01URL、请求头或媒体类型策略
  2. 02版本化控制器与 DTO 指导
  3. 03OpenAPI 版本文档
  4. 04集中设置弃用响应头
  5. 05契约测试指导

适用场景

  1. 01设计带版本的公共 API
  2. 02一致地弃用某个 API 版本
  3. 03测试并维护多个 API 契约

安装

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

$npx skills add https://github.com/rrezartprebreza/spring-boot-skills --skill api-versioning

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

包含的文件

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

agents/
openai.yaml
examples/
bad-versioned-controller.java
good-versioned-controller.java

详细介绍

API 版本控制(Boot 3 / Framework 6)

Boot 3 不提供 Boot 4 内置映射中的 version 属性。请选择一种明确的策略并保持一致:URL 路径段、请求标头或媒体类型参数。

优先采用清晰、可测试的契约

对于公共 API,/api/v1/orders 和 /api/v2/orders 通常是最清晰的选择。如果 URL 必须保持稳定,请在 Web 边界解析请求标头,并路由到对应版本的处理程序。不要在业务服务中隐藏版本选择逻辑,也不要在过滤器和控制器中重复实现。

@RestController
@RequestMapping("/api/v1/orders")
class OrderV1Controller {
    @GetMapping("/{id}")
    OrderV1 get(@PathVariable UUID id) { ... }
}

在 OpenAPI 中记录受支持的版本,定义移除策略,并对不受支持的版本返回一致的错误。弃用某个版本时,通过响应通知或过滤器添加 Deprecation、Sunset 和 Link 标头。

迁移边界

保持特定版本的 DTO 和控制器精简。将两个版本都映射到相同的应用用例,不要在每个版本中复制领域逻辑。为每个受支持的版本添加契约测试;如果使用媒体类型,请验证内容协商。

常见问题

  • Agent 在 Boot 3 中使用 Boot 4 的 version 属性——该属性不可用;请选择明确的路由策略。
  • Agent 混用 URL、标头和媒体类型解析——请选择唯一的事实来源。
  • Agent 在服务中处理版本分支——请在 Web 适配器边界处理兼容性。
  • Agent 更改响应字段却不进行版本控制——请保留旧契约或发布新版本。
  • Agent 在每个控制器中自行添加弃用标头——请通过通知或过滤器集中处理。
  • Agent 只记录最新版本——请为每个受支持的版本维护 OpenAPI 文档和契约测试。

评论

支持 Markdown