OpenAPI 规范

用 OpenAPI 描述 HTTP 接口的路径、参数、模式与响应;描述文件可生成文档、客户端 SDK、服务端骨架与测试,是接口协作的通用载体。

OpenAPI 是什么

OpenAPI 用一份结构化文件描述 HTTP 接口的路径、参数、请求与响应模式,是接口协作的通用载体。它可以生成文档、客户端 SDK、服务端骨架与测试用例,让接口契约从口头约定与聊天记录,变成可以被工具读取和校验的产物。

怎么避免文档与实现两张皮

把规范文件当成契约而不是文档附件:接入契约测试或在网关做请求响应校验,让实现与规范不一致时构建直接失败。设计上建议先写规范再写实现,这样接口形态由业务需求决定,而不是被实现细节裹挟着反向变形。

最小片段

最小片段
openapi: 3.1.0
info:
  title: Orders API
  version: 1.0.0
paths:
  /orders/{id}:
    get:
      parameters:
        - name: id          # 路径参数必须标记必需
          in: path
          required: true
          schema: { type: string }
      responses:
        '200': { description: 订单详情 }
        '404': { description: 订单不存在 }
        '429': { description: 触发限流 }

编写要点

  • 模式里明确标记必填与可空,避免生成代码把可选字段当成必需
  • 为响应定义明确的错误结构与状态码,不要只写成功分支
  • 枚举值增加时消费方要能容忍未知值,避免破坏兼容
  • 复用组件定义,减少分散重复的模式
  • 为每个操作写明鉴权要求与限流口径

基本信息

版本差异3.1 与 3.0 在 JSON Schema 支持范围上存在差异
常用工具链文档渲染、代码生成、模拟服务、契约测试
同步机制用契约测试或网关校验比对实现与规范
复用方式把可复用模式抽成组件,按引用组装

怎么落到工程里

常见做法是把规范文件放进代码仓库并与接口代码同源管理:服务端用规范生成骨架或校验请求,客户端用规范生成 SDK,测试用例也从规范推导。提交时校验规范格式与兼容性,若新增必填字段或删除已有字段就阻断合并,契约演进才有强制力。

规范文件要与实现同步校验:用契约测试或网关校验防止文档与实现各走各的,否则联调时会发现双方依据的字段名、类型与必填要求都不一样。

易错点

  • 规范文件长期未与实现同步,联调基于过时文档反复返工
  • 模式定义过细过严,客户端生成代码对新增字段异常脆弱
  • 只描述成功响应,错误结构靠口头约定,客户端解析逻辑各写一套
  • 接口版本升级未在规范中体现废弃标记,调用方不知道何时必须迁移

数据来源与参考

  • OpenAPI Specification 3.1(spec.openapis.org)
  • OpenAPI Initiative 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌