API 反模式

常见反模式:隧道式单端点、把数据库表当资源、错误码全 200、无版本与无废弃策略、参数语义不一致;识别这些模式有助于在设计评审阶段提出改进项。

API 反模式是什么

反模式指在多个团队反复出现、看似能快速交付但长期抬高维护成本的设计习惯。它与「写得不够漂亮」不同,代价是可量化的:接入方要额外写适配代码、网关无法做缓存与限流、故障定位只能靠翻日志猜。识别反模式的价值在于把踩过的坑沉淀成评审清单,在设计阶段提出改进项。

为什么评审常漏掉

评审往往聚焦字段命名与文档格式,忽略错误语义、兼容策略与资源建模这些更难撤回的决定。接口一旦被下游使用,改动就要走废弃与迁移流程,成本比评审时改一行高一个数量级。评审清单应覆盖资源语义、状态码与错误结构、版本与废弃、幂等与安全边界四类问题,并在合并前用自动化规则兜底。

反模式清单

反模式症状改法
单端点隧道所有调用走同一个路径,动作写在请求体里按资源拆分接口,用方法表达意图
表驱动资源资源名与表名一一对应,字段直接暴露按领域语义建模,隔离内部存储
全员成功码业务失败也返回成功,错误藏在响应体里用状态码表达结果并配统一错误结构
静默变更字段语义改变没有公告与迁移期建立兼容策略与废弃流程
参数语义漂移同一过滤参数在不同接口含义不同统一约定并写进接口规范

典型使用场景

  • 新接口设计评审时按清单逐项过一遍,把问题挡在开发之前
  • 接手历史接口前先盘点反模式,评估改造与兼容成本
  • 把清单固化成流水线检查规则,合并前自动拦截偏差
  • 为对外开放的接口做版本规划时,确认哪些约定必须保留

基本信息

影响范围接入方适配成本、网关治理能力、故障定位效率
高发阶段交付压力大、接口由多方并行开发时最容易出现
治理手段评审清单、接口规范文档、自动化规则检查
修复成本已被下游使用的接口改动需走废弃与迁移流程
评审清单化比反复讲道理有效:把反模式整理成检查项,每次评审按清单过一遍,新人对齐的速度会很不一样。
历史接口无人敢改、新需求继续叠加特例,最终形成只有原作者能维护的接口;约定越晚收敛,后续每一次改动的成本越高。

易错点

  • 历史接口无人敢改,新需求继续叠加特例,接口语义越来越难推断
  • 评审只谈字段命名,忽略错误语义与兼容策略,上线后被迫写兼容层
  • 状态码恒为成功码的写法让网关与监控无法区分调用成功与业务失败
  • 把数据库表结构直接暴露成资源,一次库表重构就变成破坏性变更
  • 缺少统一分页与过滤约定,同一参数在不同接口语义不同,接入方频繁踩坑

数据来源与参考

  • Microsoft REST API Guidelines
  • 《Designing Web APIs》(Jin & Sahni)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌