Skip to content

开发指南

接口与路由

  • 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),如果遇到本机环境变量导致配置未生效,优先用项目脚本执行。

权威口径

基于 MIT 许可发布