warrior a56216f3e6 created api 12 часов назад
..
README.md a56216f3e6 created api 12 часов назад
routes.ts a56216f3e6 created api 12 часов назад

README.md

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 实例:

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

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

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
🎉 路由加载完成!

测试路由

启动服务器后,可以使用以下命令测试路由:

# 测试基础路由
curl http://localhost:3000/api/user

# 测试子路由
curl http://localhost:3000/api/user/admin

# 测试具体接口
curl http://localhost:3000/api/user/list