3. OpenAPI 3.0 规范入门:核心结构、版本选择与格式基础

在支付订单领域聚合建模中,OpenAPI 规范是描述接口契约的行业标准。本章聚焦 OpenAPI 3.0 的核心结构、版本选型策略以及 YAML/JSON 格式的书写要点,为后续的参数配置与测试打下基础。

3.1 OpenAPI 规范的核心结构

一个标准的 OpenAPI 3.0 文档由顶层对象和若干子对象组成,核心结构包含以下 7 个必选或高频使用的部分:

字段 类型 说明
openapi string 规范版本号,例如 "3.0.3"
info object API 元信息:title、version、description
servers array 服务地址列表,可包含变量替换
paths object 接口路径与操作(GET/POST/PUT 等)
components object 可复用的 schemas、parameters、responses 等
security array 全局安全方案声明
tags array 接口分组标签,用于文档归类
关键原则:paths 是文档的核心,每个路径下的 operation 必须包含 operationId、parameters 和 responses。components 用于消除重复定义,提升规范的可维护性。

3.2 版本选择:2.0 vs 3.0 vs 3.1

当前主流版本为 OpenAPI 3.0.x(推荐 3.0.3)。3.1 虽已发布,但工具链支持尚不完善。以下对比帮助你在支付订单项目中做出选择:

特性 Swagger 2.0 OpenAPI 3.0 OpenAPI 3.1
JSON Schema 版本 自定义 JSON Schema Draft 04 扩展 JSON Schema Draft 2020-12
请求体描述 body 参数 requestBody 对象 同 3.0
多态/组合 有限 oneOf / anyOf / allOf 同 3.0 + 增强
示例支持 单示例 多示例(examples) 同 3.0
工具链成熟度 高 高 中
推荐场景 遗留系统 新项目首选 前沿探索
选型建议:支付订单领域建模推荐使用 OpenAPI 3.0.3。它平衡了表达能力与工具生态,主流代码生成器(如 openapi-generator)和测试平台均提供稳定支持。

3.3 YAML / JSON 格式基础

OpenAPI 规范支持 YAML 和 JSON 两种序列化格式。YAML 因可读性高成为首选,JSON 则更适合机器处理。以下是两种格式的对比与书写要点:

维度 YAML JSON
缩进 空格(2 或 4),禁止 Tab 无严格要求,通常 2 空格
注释 支持 # 注释 不支持注释
字符串引号 大部分情况可省略 必须双引号
多行文本 | 或 > 块标 需 \n 转义
引用 $ref 与 JSON 相同 $ref 原生支持

以下是一个支付订单查询接口的 YAML 示例片段:

openapi: "3.0.3"
info:
  title: 支付订单聚合 API
  version: "1.0.0"
  description: 用于订单查询、创建与状态同步

paths:
  /orders/{orderId}:
    get:
      operationId: getOrderById
      summary: 根据订单 ID 查询订单详情
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
            pattern: '^ORD\d{14}$'
      responses:
        '200':
          description: 成功返回订单对象
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
        '404':
          description: 订单不存在
常见陷阱:YAML 对缩进敏感,混用 Tab 与空格会导致解析失败。建议在编辑器中开启“显示空白字符”功能,并统一使用 2 空格缩进。

3.4 OpenAPI 3.0 文档结构总览

下图展示了 OpenAPI 3.0 文档的顶层结构及各部分之间的引用关系:

OpenAPI 3.0 文档核心结构 OpenAPI 文档根 openapi (版本) info (元信息) servers (服务) paths (路径) components security tags operation schemas parameters responses requestBody 说明:paths 下的每个 operation 通过 $ref 引用 components 中的 schemas 实现参数与响应体的复用,降低文档冗余

3.5 格式书写规范与工具链

在支付订单项目中,建议遵循以下书写规范:

  • 路径命名:使用小写字母 + 连字符,如 /payment-orders/{orderId}
  • 参数命名:使用 camelCase,如 merchantId、settlementDate
  • 响应状态码:明确区分 2xx(成功)、4xx(客户端错误)、5xx(服务端错误)
  • 示例填充:每个 schema 至少提供一个完整示例,便于测试工具自动生成请求
  • 版本管理:在 info.version 中维护语义化版本,路径中不嵌入版本号
推荐工具:使用 Swagger Editor 进行实时预览与校验,openapi-generator 生成服务端桩代码和客户端 SDK,Redoc 渲染美观的 API 文档页面。

通过掌握 OpenAPI 3.0 的核心结构、版本选型与 YAML/JSON 格式基础,你已具备构建支付订单领域接口规范的能力。下一节将深入讲解如何利用 components 定义可复用的订单模型与参数。