Debian环境下Swagger项目的典型结构
在Debian系统中,Swagger项目的结构主要取决于使用的后端框架(如Node.js/Express、Go、Python/Flask等),但核心逻辑一致:分离API代码与文档定义,通过目录组织不同版本和组件。以下是常见场景的结构示例:
适用于基于Node.js的Express应用,强调前后端分离和版本控制:
my_debian_api_project/
├── /api # API版本控制根目录
│ ├── /v1 # 版本1的API文件
│ │ ├── /controllers # 控制器(业务逻辑)
│ │ │ └── userController.js
│ │ ├── /routes # 路由定义
│ │ │ └── userRoutes.js
│ │ └── swagger.json # 版本1的Swagger文档
│ └── /v2 # 版本2的API文件(可选扩展)
│ ├── /controllers
│ │ └── userControllerV2.js
│ ├── /routes
│ │ └── userRoutesV2.js
│ └── swagger.json
├── /config # 配置文件(如数据库连接、Swagger全局设置)
├── /middlewares # 中间件(如认证、日志)
├── /public # 静态文件(如Swagger UI的额外资源)
├── app.js # Express应用入口(集成Swagger UI)
└── package.json # 项目依赖与脚本
说明:
/api/v1、/api/v2目录实现API版本管理,每个版本独立维护控制器、路由和Swagger文档;app.js中通过swagger-ui-express加载对应版本的Swagger文档(如require('./api/v1/swagger.json')),并提供/api-docs路由访问UI。适用于基于Go语言的Gin框架项目,强调模块化和代码生成:
my_debian_go_project/
├── /cmd # 应用入口
│ └── /server # 主服务器文件
│ └── main.go # 启动Express服务器(集成Swagger)
├── /internal # 内部业务逻辑(私有目录)
│ └── /users # 用户模块
│ └── users.go # 用户处理逻辑(含Swagger注释)
├── /pkg # 公共库(如模型、工具)
│ └── /models # 数据模型
│ └── user.go # 用户模型(含Swagger注释)
├── /api # API文档输出目录
│ └── /users # 用户模块的Swagger文档
│ └── users.swagger.json
├── /go.mod # Go模块依赖管理
├── /go.sum # 依赖校验文件
└── swag.yaml # Swagger配置(如全局参数、安全方案)
说明:
swag init命令根据代码中的Swagger注释(如// @Summary)自动生成/api目录下的文档;cmd/server/main.go中通过gin-swagger中间件加载生成的文档,提供/swagger/index.html访问UI。适用于基于Python的Flask应用,强调轻量和灵活性:
my_debian_flask_project/
├── /app # 应用核心目录
│ ├── /static # 静态文件(如Swagger UI的CSS/JS)
│ │ └── swagger.json # Swagger文档(或YAML文件)
│ ├── /templates # HTML模板(可选)
│ ├── /views # 视图函数(API端点)
│ │ ├── users.py # 用户相关端点(含Swagger装饰器)
│ │ └── __init__.py
│ └── __init__.py # Flask应用工厂
├── config.py # 配置文件(如Swagger UI路径)
├── run.py # 应用启动文件
└── requirements.txt # Python依赖
说明:
flask-swagger-ui或swagger-ui-express(通过Node.js中间件)加载/app/static/swagger.json文档;@swag_from('users.yml'))关联Swagger描述,实现文档与代码同步。swagger.json(JSON格式)或swagger.yaml(YAML格式),定义API的路径、参数、响应等规范;/api/v1、/api/v2)区分不同版本的API,便于迭代维护;app.js、main.go、run.py)负责加载Swagger文档并提供UI访问路由(如/api-docs)。以上结构均基于Debian系统的常见实践,可根据项目规模(如小型API、大型微服务)调整目录层级(如拆分/controllers为更细粒度的模块)。