|
|
@@ -0,0 +1,127 @@
|
|
|
+# API 路由自动加载说明
|
|
|
+
|
|
|
+## 功能说明
|
|
|
+
|
|
|
+路由加载器会自动扫描 `./api/` 目录下的所有 `routes*.ts` 文件,并根据文件路径和名称自动挂载到 Express 应用。
|
|
|
+
|
|
|
+## 目录结构规范
|
|
|
+
|
|
|
+```
|
|
|
+api/
|
|
|
+└── module/
|
|
|
+ └── user/
|
|
|
+ ├── routes.ts -> 挂载到 /api/user
|
|
|
+ └── routes-admin.ts -> 挂载到 /api/user/admin
|
|
|
+```
|
|
|
+
|
|
|
+## 路由挂载规则
|
|
|
+
|
|
|
+### 1. 基础路由 (routes.ts)
|
|
|
+- **文件路径**: `./api/module/user/routes.ts`
|
|
|
+- **挂载路径**: `/api/user`
|
|
|
+- **规则**: 使用父目录名称作为路由路径
|
|
|
+
|
|
|
+### 2. 子路由 (routes-xxx.ts)
|
|
|
+- **文件路径**: `./api/module/user/routes-admin.ts`
|
|
|
+- **挂载路径**: `/api/user/admin`
|
|
|
+- **规则**: `routes-` 后面的部分作为子路径
|
|
|
+
|
|
|
+## 路由文件编写规范
|
|
|
+
|
|
|
+每个路由文件必须导出一个 Express Router 实例:
|
|
|
+
|
|
|
+```typescript
|
|
|
+import express from "npm:express";
|
|
|
+
|
|
|
+const router = express.Router();
|
|
|
+
|
|
|
+// 定义路由
|
|
|
+router.get("/", (req, res) => {
|
|
|
+ res.json({ message: "Hello" });
|
|
|
+});
|
|
|
+
|
|
|
+// 必须使用 default export
|
|
|
+export default router;
|
|
|
+```
|
|
|
+
|
|
|
+## 示例
|
|
|
+
|
|
|
+### 示例 1: 用户基础 API
|
|
|
+
|
|
|
+**文件**: `./api/module/user/routes.ts`
|
|
|
+
|
|
|
+```typescript
|
|
|
+import express from "npm:express";
|
|
|
+
|
|
|
+const router = express.Router();
|
|
|
+
|
|
|
+// GET /api/user
|
|
|
+router.get("/", (req, res) => {
|
|
|
+ res.json({ message: "User API" });
|
|
|
+});
|
|
|
+
|
|
|
+// GET /api/user/list
|
|
|
+router.get("/list", (req, res) => {
|
|
|
+ res.json({ users: [] });
|
|
|
+});
|
|
|
+
|
|
|
+export default router;
|
|
|
+```
|
|
|
+
|
|
|
+### 示例 2: 用户管理 API
|
|
|
+
|
|
|
+**文件**: `./api/module/user/routes-admin.ts`
|
|
|
+
|
|
|
+```typescript
|
|
|
+import express from "npm:express";
|
|
|
+
|
|
|
+const router = express.Router();
|
|
|
+
|
|
|
+// GET /api/user/admin
|
|
|
+router.get("/", (req, res) => {
|
|
|
+ res.json({ message: "Admin API" });
|
|
|
+});
|
|
|
+
|
|
|
+// POST /api/user/admin/create
|
|
|
+router.post("/create", (req, res) => {
|
|
|
+ res.json({ message: "Create user" });
|
|
|
+});
|
|
|
+
|
|
|
+export default router;
|
|
|
+```
|
|
|
+
|
|
|
+## 注意事项
|
|
|
+
|
|
|
+1. **文件命名**: 必须以 `routes` 开头,扩展名为 `.ts`
|
|
|
+2. **导出方式**: 必须使用 `export default` 导出路由
|
|
|
+3. **目录结构**: 路由文件必须放在至少两级子目录下(如 `api/module/xxx/`)
|
|
|
+4. **路径冲突**: 避免创建路径冲突的路由文件
|
|
|
+
|
|
|
+## 启动日志
|
|
|
+
|
|
|
+服务器启动时会显示加载的路由信息:
|
|
|
+
|
|
|
+```
|
|
|
+🔍 正在扫描路由文件...
|
|
|
+📦 找到 2 个路由文件:
|
|
|
+ ⏳ 加载: /api/user <- /path/to/api/module/user/routes.ts
|
|
|
+ ✅ 已挂载: /api/user
|
|
|
+ ⏳ 加载: /api/user/admin <- /path/to/api/module/user/routes-admin.ts
|
|
|
+ ✅ 已挂载: /api/user/admin
|
|
|
+🎉 路由加载完成!
|
|
|
+```
|
|
|
+
|
|
|
+## 测试路由
|
|
|
+
|
|
|
+启动服务器后,可以使用以下命令测试路由:
|
|
|
+
|
|
|
+```bash
|
|
|
+# 测试基础路由
|
|
|
+curl http://localhost:3000/api/user
|
|
|
+
|
|
|
+# 测试子路由
|
|
|
+curl http://localhost:3000/api/user/admin
|
|
|
+
|
|
|
+# 测试具体接口
|
|
|
+curl http://localhost:3000/api/user/list
|
|
|
+```
|