Swagger 核心组件
Swagger 是一套围绕 OpenAPI 规范构建的开源工具集,用于设计、构建、记录和使用 RESTful API。
Swagger 提供了一种标准化的方式来描述 API 的结构,使得开发者和机器都能理解 API 的功能而无需访问源代码或其他文档。
Swagger 的核心价值在于:
- 标准化:提供统一的 API 描述格式
- 可视化:自动生成交互式 API 文档
- 可测试性:允许直接在文档中测试 API 端点
- 代码生成:支持多种语言的客户端和服务端代码生成
Swagger 核心组件
组件 | 输入 | 输出 | 适用阶段 |
---|---|---|---|
Swagger Editor | 手动编写 YAML/JSON | 实时预览的 API 文档 | API 设计阶段 |
Swagger UI | OpenAPI 文件 | 交互式网页文档 | 开发/测试阶段 |
Swagger Codegen | OpenAPI 文件 | 客户端/服务端代码 | 前后端协作阶段 |
组件协作流程图:
Swagger Editor(设计API) ↓ OpenAPI 规范文件(YAML/JSON) ↓ Swagger UI(展示文档) 或 Swagger Codegen(生成代码)
Swagger 核心组件详解
1. Swagger Editor
Swagger Editor 是基于浏览器的可视化编辑器,用于编写和实时预览 OpenAPI 规范(YAML/JSON 格式)。
Swagger Editor 提供语法高亮、自动补全和错误校验。
Swagger Editor 代码生成、保存和导出功能现已加入 SmartBear API Hub,访问地址:https://try.platform.smartbear.com/new-organization。
使用场景:
- 快速设计 API 原型
- 学习 OpenAPI 规范语法
访问在线编辑器 Swagger Editor:https://editor.swagger.io/
输入以下 YAML 代码(定义一个简单的 GET /users 接口):
实例
openapi: 3.0.3
info:
title: RUNOOB 用户管理系统
version: 1.0.0
paths:
/users:
get:
summary: 获取用户列表
responses:
'200':
description: 成功返回用户列表
content:
application/json:
schema:
type: array
items:
type: object
properties:
id:
type: integer
name:
type: string
右侧将实时渲染出 API 文档和交互式 UI。
Swagger UI
Swagger UI 将 OpenAPI 规范转换为可视化交互式文档,支持直接在浏览器中测试 API。
Swagger UI 会自动生成请求示例、响应模型和调试界面。
Swagger UI: https://swagger.io/tools/swagger-ui/
使用场景:
- 团队共享 API 文档
- 前端开发者调试接口
集成示例(以 Node.js 为例),安装依赖:
npm install swagger-ui-express swagger-jsdoc
创建 swagger.js 配置文件:
实例
const options = {
definition: {
openapi: '3.0.0',
info: { title: '用户API', version: '1.0.0' },
},
apis: ['./routes/*.js'], // 扫描路由文件中的注释
};
const swaggerSpec = swaggerJSDoc(options);
module.exports = swaggerSpec;
在 Express 中挂载 UI:
实例
const swaggerUi = require('swagger-ui-express');
const swaggerSpec = require('./swagger');
const app = express();
app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec));
访问 http://localhost:3000/api-docs 查看文档。
Swagger Codegen
Swagger Codegen 根据 OpenAPI 规范自动生成客户端 SDK(如 Java、Python)或服务端桩代码(如 Spring、Flask)。
Swagger Codegen 支持自定义模板。
下载页面:https://swagger.io/tools/swagger-codegen/
使用场景:
- 快速生成 API 调用的客户端代码
- 服务端接口自动化开发
操作示例(命令行生成 Java 客户端), 下载 Swagger Codegen CLI:
wget https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.35/swagger-codegen-cli-3.0.35.jar -O swagger-codegen-cli.jar
生成代码:
java -jar swagger-codegen-cli.jar generate \ -i https://petstore.swagger.io/v2/swagger.json \ -l java \ -o ./petstore-api-client
Swagger Hub(可选扩展)
Swagger Hub 是 Swagger 的云端平台,提供协作设计、版本管理和托管文档。
Swagger Hub 支持团队协作和 API 生命周期管理。
使用场景:
- 企业级 API 项目管理
- 需要在线协作的分布式团队
点我分享笔记