2025-09-02 09:29:20 +08:00
|
|
|
# API 文档结构说明
|
|
|
|
|
|
|
|
|
|
本项目已将 Swagger API 文档从路由文件中分离出来,采用模块化的文档管理方式。
|
|
|
|
|
|
|
|
|
|
## 文件夹结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
docs/
|
|
|
|
|
├── README.md # 本说明文件
|
|
|
|
|
├── schemas/ # 数据模型定义
|
|
|
|
|
│ ├── product.js # 商品相关数据模型
|
|
|
|
|
│ ├── order.js # 订单相关数据模型
|
|
|
|
|
│ ├── user.js # 用户相关数据模型
|
2025-09-05 16:48:53 +08:00
|
|
|
│ ├── cart.js # 购物车相关数据模型
|
|
|
|
|
│ └── announcement.js # 通知公告相关数据模型
|
2025-09-02 09:29:20 +08:00
|
|
|
└── apis/ # API 接口定义
|
|
|
|
|
├── products.js # 商品相关 API
|
2025-09-05 16:48:53 +08:00
|
|
|
├── orders.js # 订单相关 API
|
|
|
|
|
└── announcements.js # 通知公告相关 API
|
2025-09-02 09:29:20 +08:00
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 优势
|
|
|
|
|
|
|
|
|
|
1. **模块化管理**: 按功能模块分离文档,便于维护和查找
|
|
|
|
|
2. **代码分离**: 路由文件专注于业务逻辑,文档定义独立管理
|
|
|
|
|
3. **复用性**: Schema 定义可以在多个 API 中复用
|
|
|
|
|
4. **可维护性**: 文档修改不会影响业务代码,降低出错风险
|
|
|
|
|
|
|
|
|
|
## 使用方法
|
|
|
|
|
|
|
|
|
|
### 添加新的 Schema
|
|
|
|
|
|
|
|
|
|
在 `schemas/` 文件夹中创建新的 `.js` 文件,使用 `@swagger` 注释定义数据模型:
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
/**
|
|
|
|
|
* @swagger
|
|
|
|
|
* components:
|
|
|
|
|
* schemas:
|
|
|
|
|
* YourModel:
|
|
|
|
|
* type: object
|
|
|
|
|
* properties:
|
|
|
|
|
* id:
|
|
|
|
|
* type: integer
|
|
|
|
|
* description: ID
|
|
|
|
|
*/
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 添加新的 API 文档
|
|
|
|
|
|
|
|
|
|
在 `apis/` 文件夹中创建新的 `.js` 文件,使用 `@swagger` 注释定义 API 接口:
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
/**
|
|
|
|
|
* @swagger
|
|
|
|
|
* tags:
|
|
|
|
|
* name: YourModule
|
|
|
|
|
* description: 模块描述
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @swagger
|
|
|
|
|
* /your-endpoint:
|
|
|
|
|
* get:
|
|
|
|
|
* summary: 接口描述
|
|
|
|
|
* tags: [YourModule]
|
|
|
|
|
* responses:
|
|
|
|
|
* 200:
|
|
|
|
|
* description: 成功响应
|
|
|
|
|
*/
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 配置
|
|
|
|
|
|
|
|
|
|
Swagger 配置文件 `swagger.js` 已更新扫描路径:
|
|
|
|
|
|
|
|
|
|
```javascript
|
|
|
|
|
apis: ['./docs/schemas/*.js', './docs/apis/*.js', './routes/*.js', './admin/routes/*.js']
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
这样既保持了对现有路由文件中文档的兼容性,又支持新的模块化文档结构。
|