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為更細粒度的模塊)。