2026-08-06 16:50:57.209883+08 / restful-api
API Meta Information
介绍 API 元信息、语义化版本、API 标识符和 Audience 分类等通用设计规范。
Restful ApiApi DesignOpenapi
API Meta Information
API Specification 必须包含 API metadata
API 规范必须包含完整的 API metadata,以支持 API 生命周期管理和治理。
OpenAPI Specification 必须提供以下信息:
| 字段 | 描述 |
|---|---|
#/info/title |
唯一且具有业务含义的 API 名称 |
#/info/version |
遵循语义化版本规范的 API 版本 |
#/info/description |
API 的清晰描述 |
同时必须提供以下扩展字段:
| 字段 | 描述 |
|---|---|
#/info/x-api-id |
API 唯一且不可变的标识符 |
#/info/x-audience |
API 的目标使用者范围 |
示例:
openapi: 3.0.1
info:
title: User Management API
description: 用户管理相关接口。
version: 1.2.0
x-api-id: user-management-api-123456
x-audience: company-internal
API 版本必须使用 Semantic Versioning
OpenAPI 中:
#/info/version
表示 API Specification 的版本。
该版本必须遵循 Semantic Versioning 2.0。
格式必须为:
<MAJOR>.<MINOR>.<PATCH>
例如:
1.3.7
版本升级规则
MAJOR 主版本
当 API 出现不兼容变化时,必须升级 MAJOR。
例如:
- 删除已有接口
- 删除或重命名请求字段
- 以破坏兼容性的方式修改响应结构
- 修改 API 行为导致现有消费者无法继续使用
示例:
1.0.0 -> 2.0.0
MINOR 次版本
当新增功能且保持向后兼容时,升级 MINOR。
例如:
- 新增 API Endpoint
- 新增可选参数
- 新增不会影响现有客户端的 Response 字段
示例:
1.2.0 -> 1.3.0
PATCH 修订版本
用于向后兼容的问题修复或文档修改。
例如:
- 修正描述错误
- 修正文档示例
- 修复接口说明问题
示例:
1.3.0 -> 1.3.1
API Version 与软件版本区别
API Version 描述的是:
对外 API Contract 的变化。
它不是软件发布版本。
以下变化通常不需要修改 API Version:
- 内部代码重构
- 修改内部实现
- 更新依赖库
- 修改数据库实现
只要 API Contract 没有变化,API Version 保持不变。
API Version 限制
API Version 不允许包含:
Pre-release 标识
错误:
1.0.0-alpha
Build Metadata
错误:
1.0.0+build123
只允许:
MAJOR.MINOR.PATCH
例如:
info:
version: 1.3.7
API Identifier
每个 API Specification 必须提供唯一且不可变的 API ID。
API ID 用于:
- 跟踪 API 演进历史
- 管理 API 生命周期
- 关联不同版本 API
- 支持自动兼容性检查
API ID 在生命周期内不可修改。
示例:
info:
x-api-id: user-management-api-123456
推荐定义:
x-api-id:
type: string
description: API 唯一不可变标识。
示例:
info:
x-api-id: d0184f38-b98d-11e7-9c56-68f728c1ba70
API ID 表示 API 本身,API Version 表示该 API 的具体演进阶段。
示例:
API ID:
user-management-api
Versions:
1.0.0
1.1.0
1.2.0
2.0.0
所有版本都属于同一个 API 生命周期。
API Audience 分类
每个 API 必须定义目标使用范围。
Audience 用于确定:
- API 治理规则
- 文档公开范围
- 安全策略
- 变更流程
- Review 要求
字段:
#/info/x-audience
允许值:
x-audience:
type: string
支持的值:
internal
company-internal
external-partner
external-public
Audience 定义
| Audience | 分类 | 描述 |
|---|---|---|
| internal | 系统内部 | 仅供同一团队维护的组件或子系统内部使用 |
| company-internal | 组织内部 | 可以跨团队使用,但不会暴露给外部 |
| external-partner | 外部合作伙伴 | 提供给授权合作伙伴 |
| external-public | 公开 API | 面向公网用户 |
Audience 示例
内部 API
info:
x-audience: internal
示例:
同一个系统内部的 Service A -> Service B
公司内部 API
info:
x-audience: company-internal
示例:
组织内不同团队之间的 Service A -> Service B
合作伙伴 API
info:
x-audience: external-partner
示例:
企业系统 -> 合作伙伴系统
公共 API
info:
x-audience: external-public
示例:
互联网开放 API
Audience 规则
- 一个 API Specification 必须只有一个 Audience。
- 不允许同时声明多个 Audience。
- 如果一个 API 中包含不同 Audience 的接口,应拆分为多个 API Specification。
错误:
x-audience:
- internal
- external-public
正确:
API A:
x-audience: internal
API B:
x-audience: external-public