在 Debian 上简化 Swagger 开发流程
一 环境准备与工具选型
- 更新系统并安装基础工具:sudo apt update && sudo apt install -y nodejs npm openjdk-11-jdk maven。Node.js 与 npm 用于运行 Swagger UI / Swagger Editor / express-swagger-ui 等前端工具;OpenJDK 与 Maven 用于 Spring Boot 项目集成与构建。
- 工具选型建议:
- Node.js/Express 项目优先用 swagger-ui-express 托管文档,开发体验轻量、集成快。
- Spring Boot 项目优先用 springdoc-openapi(OpenAPI 3,配置少、适配新版本 Spring Boot),老项目可用 springfox(Swagger 2)。
二 快速上手路径
- Node.js + Express 一条龙
- 初始化与依赖:mkdir swagger-demo && cd swagger-demo && npm init -y && npm i express swagger-ui-express yamljs。
- 编写规范:新建 swagger.yaml(示例见下文),定义 info、paths、components 等。
- 启动服务:node app.js,访问 http://localhost:3000/api-docs。
- 可选:用 PM2 守护进程与 Nginx 反向代理,便于生产访问与端口管理。
- Spring Boot + springdoc(推荐)
- 添加依赖(Maven):
org.springdoc
springdoc-openapi-starter-webmvc-ui
2.1.0
- 启动应用:mvn spring-boot:run,访问 http://localhost:8080/swagger-ui/。
- 若集成 Spring Security,将 Swagger 相关路径加入白名单(如 /v3/api-docs、/swagger-ui/**)。
- Spring Boot + springfox(老项目)
- 添加依赖:
io.springfox
springfox-boot-starter
3.0.0
- 访问 http://localhost:8080/swagger-ui/。
三 一键文档与代码生成
- 规范即代码:使用 openapi-generator-cli 从 swagger.yaml 生成客户端/服务端桩代码,减少手写样板。示例:
npm i -g @openapitools/openapi-generator-cli
openapi-generator-cli generate -i api-spec.yaml -g javascript -o ./generated-client
- 本地编辑与预览:使用 Swagger Editor 设计/修改 YAML/JSON 规范并实时预览 UI,适合团队协作与规范沉淀。
四 安全与运维最佳实践
- 访问控制:为 Swagger UI 设置鉴权(如基于角色的访问控制、Token 校验),避免未授权访问;Spring Boot 项目将 Swagger 路径加入 Spring Security 白名单。
- 进程守护与反向代理:Node.js 项目用 PM2 托管,配合 Nginx 统一域名与端口、开启压缩与缓存。
- 持续交付:在 CI/CD 中加入规范校验与文档发布步骤,实现文档与代码同步更新;保持 springdoc/springfox 与依赖库为稳定版本,及时修复安全漏洞。
五 最小可用示例
- Express + Swagger UI(Node.js)
// app.js
const express = require(‘express’);
const swaggerUi = require(‘swagger-ui-express’);
const YAML = require(‘yamljs’);
const app = express();
const swaggerDocument = YAML.load(‘./swagger.yaml’);
app.use(‘/api-docs’, swaggerUi.serve, swaggerUi.setup(swaggerDocument));
app.listen(3000, () => console.log(‘Swagger UI at http://localhost:3000/api-docs’));
// swagger.yaml(片段)
openapi: 3.0.0
info:
title: Sample API
version: 1.0.0
paths:
/hello:
get:
summary: Say hello
responses:
‘200’:
description: OK
content:
text/plain:
schema:
type: string
- Spring Boot + springdoc(Maven 依赖)
org.springdoc
springdoc-openapi-starter-webmvc-ui
2.1.0
启动后访问 http://localhost:8080/swagger-ui/。