开发指南
接口与路由
- API 前缀:
/api/v1(见src/main.ts) - Swagger:
/api-docs
项目结构
src/main.ts:应用入口(全局前缀、Swagger、启动端口)src/app.module.ts:模块装配与全局守卫src/auth:认证与会话(登录/Token/验证码)src/system:系统管理(用户/角色/菜单/部门/字典/配置/通知/日志…)src/platform:平台能力(文件、代码生成、WebSocket 等)src/common:通用能力(异常/拦截器/守卫/上下文等)src/shared:共享基础设施(Redis/Logger 等)src/config:配置模块(TypeORM/Redis/OSS/JWT 等)
开发规范
- Controller 禁止直接注入
Repository,必须通过Service操作数据库 - 新模块建议沿用:
src/system/<module>或src/platform/<module>
路由顺序(重要)
静态路由在前,动态路由在后,避免 :id 抢占:
ts
@Put("read-all")
readAll() {}
@Put(":id")
update() {}配置说明
- 配置入口:
.env/.env.dev/.env.prod - 加载顺序:
.env->.env.{NODE_ENV}
常用配置项示例:
env
APP_PORT=8000
SESSION_TYPE=jwt # jwt | redis-token
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=123456
MYSQL_DB=youlai_admin
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
REDIS_DB=0
REDIS_PASSWORD=
JWT_SECRET_KEY=change-me
JWT_EXPIRES_IN=7200
OSS_TYPE=minio
OSS_MINIO_ENDPOINT=http://localhost:9000
OSS_MINIO_ACCESS_KEY=minioadmin
OSS_MINIO_SECRET_KEY=minioadmin
OSS_MINIO_BUCKET=default参数校验
- 使用 DTO +
class-validator - 配合全局
ValidationPipe统一返回参数错误
接口幂等
- 优先用数据库唯一约束兜底
- 对高风险写操作使用
Idempotency-Key或 Redis Lock
代码风格
- ESLint + Prettier
- 以项目脚本
pnpm lint/pnpm lint:fix为准
说明:项目使用 ESLint v9 Flat Config(youlai-nest/eslint.config.mjs),如果遇到本机环境变量导致配置未生效,优先用项目脚本执行。
