OpenAPI 规范(原名 Swagger 规范)是描述 REST API 的标准格式。它使用 JSON 或 YAML 格式定义 API 的端点、请求参数、响应结构等信息,让开发者能够清晰地了解和使用 API。
OpenAPI 规范的核心组成
一个完整的 OpenAPI 文档包含以下主要部分:
基本信息
- API 标题、版本、描述
- 服务器地址和协议
openapi: 3.0.0
info:
title: 用户管理 API
version: 1.0.0
description: 提供用户注册、登录、信息查询等功能
servers:
- url: https://api.example.com/v1
description: 生产环境
路径定义
- HTTP 方法(GET、POST、PUT、DELETE 等)
- 请求路径和参数
- 请求体结构
- 响应格式和状态码
paths:
/users/{id}:
get:
summary: 获取用户信息
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: 返回用户信息
数据模型
- 定义请求和响应中使用的数据结构
- 字段类型、必填项、验证规则
components:
schemas:
User:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
required:
- id
- name
安全配置
- 认证方式(API Key、OAuth2、JWT 等)
- 权限控制
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
security:
- ApiKeyAuth: []
传统的设计方式
直接编写 OpenAPI 文档需要手动构建 JSON 或 YAML 文件。以一个用户信息查询接口为例:
openapi: 3.0.0
info:
title: 用户管理 API
version: 1.0.0
paths:
/users/{id}:
get:
summary: 获取用户信息
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: 成功返回用户信息
content:
application/json:
schema:
type: object
properties:
id:
type: integer
name:
type: string
email:
type: string
这种方式对于复杂的 API 来说,编写和维护都比较困难,容易出现格式错误或遗漏。
使用 Apifox 进行可视化设计
Apifox 提供了图形化的接口设计界面,可以通过可视化的方式创建 API,然后导出标准的 OpenAPI 文档。
创建项目和接口
在 Apifox 中新建项目后,可以直接创建接口。界面提供了清晰的位置来填写:
- 接口名称和描述
- HTTP 方法和路径
- 请求参数配置
- 响应数据结构

定义数据模型
Apifox 支持创建可复用的数据模型(Schema)。定义好的模型可以在多个接口中引用,确保数据结构的一致性。模型编辑器提供了字段类型选择、必填项设置、数据验证规则等功能。

参数和响应配置
对于每个接口,可以详细配置:
- 路径参数、查询参数、请求头
- 请求体格式(JSON、表单数据等)
- 多种响应状态码对应的数据结构
- 错误响应格式

导出 OpenAPI 文档
设计完成后,Apifox 可以自动生成符合 OpenAPI 3.0 规范的文档。导出的文档包含了所有接口定义、数据模型和配置信息,可以直接用于:
- 生成接口文档网站
- 代码生成工具
- 测试工具导入

设计最佳实践
统一的命名规范路径、参数、字段名称保持一致的命名风格,如使用驼峰命名或下划线分隔。
详细的描述信息为每个接口、参数、字段添加清晰的描述,帮助使用者理解用途和注意事项。
合理的状态码使用根据操作结果返回恰当的 HTTP 状态码,如 200(成功)、201(创建成功)、400(请求错误)、401(未授权)等。
数据模型复用将公共的数据结构定义为可复用的模型,避免重复定义相同的字段。
版本管理制定 API 版本策略,在路径中包含版本信息或使用请求头指定版本。
通过 Apifox 这样的可视化工具,设计 OpenAPI 规范变得更加直观和高效。工具自动处理格式规范,让设计者专注于 API 的逻辑设计,减少了手动编写带来的错误风险。
