标准答案

  1. URL 版本如 /v2/orders 最直观,便于路由、文档、监控和客户端切换,但会让资源地址随版本增加。
  2. Header 版本或媒体类型版本能保持 URL 稳定,适合协议协商,但调试、缓存键和人工调用时需要更严格的工具与约定。
  3. 新增可选响应字段、增加新端点、放宽输入范围通常可以保持兼容;删除字段、改变字段类型或含义、收紧校验和改变默认行为通常是破坏性变化。
  4. 升级前要明确旧版支持期限、调用量、迁移 SDK、兼容层和下线条件;版本不是只在路由中加一个数字。
  5. 无论版本放在哪里,错误码、认证、幂等、分页和可观测性都应维持一致的基础约定。

题目解析

频繁大版本往往说明初始契约不稳定或扩展方式不足。优先通过容忍未知字段、明确默认值和新的能力字段演进。

版本路由还影响网关、缓存、SDK、文档和指标维度;选择后要让这些环节都能识别版本。

常见误区

  • 每增加一个字段就发布新版本,造成客户端碎片化。
  • 认为 URL 版本一定落后于 Header 版本,或反过来。
  • 发布 v2 后没有旧版迁移计划和下线观测。

作者信息