ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

NestJS Starter 项目结构完全解析:6大模块的REST API单体架构设计一图看懂

NestJS Starter 项目结构完全解析:6大模块的REST API单体架构设计一图看懂 NestJS Starter 项目结构完全解析6大模块的REST API单体架构设计一图看懂【免费下载链接】nestjs-starter-rest-apiNestJS Starter Kit. Monolithic Backend. REST API.项目地址: https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-api本文带你快速搞懂 nestjs-starter-rest-api——一个基于 NestJS 11 的轻量级单体后端 REST API 启动套件。它开箱即用地内置了 JWT 认证、RBAC 权限、TypeORM 数据库、Docker 部署等能力是新手搭建企业级 Node.js 后端的理想起点。为什么值得用这个 NestJS 启动套件相比从零搭建这个 starter kit 把后端开发中最耗时的基础设施都做好了能力技术方案状态身份认证JWTRS256 非对称密钥✅ 已完成权限控制RBAC 角色模型 ACL 服务✅ 已完成ORM 集成TypeORM✅ 已完成数据库迁移TypeORM Migrations✅ 已完成日志winston✅ 已完成参数校验class-validator 全局管道✅ 已完成分页SQL offset limit✅ 已完成容器化Dockerfile docker-compose✅ 已完成API 文档自动生成 Swagger / OpenAPI✅ 已完成此外还附带 Prettier 格式化、Husky 提交钩子、Commitlint 规范、SonarCloud 代码质量检查等隐性福利。全景图6大模块一图看懂整个src/采用 NestJS 的模块化单体架构所有业务模块在 app.module.ts 中统一装配src/ ├── main.ts # 应用入口端口、前缀、Swagger ├── app.module.ts # 根模块装配所有业务模块 ├── cli.ts # 命令行入口 │ ├── ① 应用入口区src/ 根文件 ├── ② user/ 用户模块账户管理 ├── ③ auth/ 认证授权模块JWT RBAC ├── ④ article/ 文章模块业务 CRUD 示例 ├── ⑤ shared/ 共享模块配置、日志、过滤器、中间件 │ migrations/ # ⑥ 数据库迁移文件 test/ # ⑥ E2E 端到端测试 scripts/ # ⑥ 辅助脚本npm 代理、JWT 密钥生成 docs/ # ⑥ 架构与 API 文档一句话理解业务模块各管一个领域共享模块提供公共地基外围区域负责数据演进和质量保障。官方结构说明见 project-structure.md。① 应用入口区main.ts 如何拉起整个应用main.ts 是全局装配点做了四件关键事全局路由前缀所有接口统一挂在/api/v1下天然支持未来版本升级全局校验管道ValidationPipe配合 class-validator 自动拦截非法参数请求追踪RequestIdMiddleware为每个请求打上唯一 ID方便日志排查Swagger 文档启动后访问/swagger即可看到全部接口文档根模块 app.module.ts 仅做一件事——导入四大模块SharedModule、UserModule、AuthModule、ArticleModule。结构极简一眼看清依赖全貌。② auth 模块JWT 认证与 RBAC 权限核心auth 模块是整个安全体系的心脏内部按职责拆成六个目录auth/ ├── constants/ # 角色常量、策略常量 ├── controllers/ # 登录、注册、刷新 Token 接口 ├── decorators/ # Roles 角色装饰器 ├── dtos/ # 登录/注册输入输出 DTO ├── guards/ # 4 道守卫本地认证、JWT、刷新Token、角色校验 └── strategies/ # 3 种 Passport 策略local、jwt-auth、jwt-refresh亮点设计RS256 非对称签名JWT 使用公钥/私钥对auth.module.ts私钥仅用于签发公钥用于校验安全性高于常见的 HS256双 Token 机制短期 access token 长期 refresh tokenjwt-refresh.guard.ts专门负责无感刷新声明式鉴权控制器方法上标注角色装饰器配合roles.guard.ts自动拦截越权请求③ user 模块标准业务模块的分层样板user 模块是最值得抄作业的标准分层结构每个目录都有明确分工目录职责示例文件controllers/接收请求、返回响应user.controller.tsdtos/定义数据进出网络的严格格式user-create-input.dto.tsentities/映射数据库表结构user.entity.tsrepositories/连接并操作数据库user.repository.tsservices/编写业务逻辑user.service.ts注意其中的user-acl.service.ts它继承共享模块的BaseAclService声明谁能对 User 资源做什么操作。这套 ACL 机制的完整用法可参考 acl.md比如可以写出自定义规则——只有文章作者本人能修改自己的文章。④ article 模块可复用的 CRUD 业务模板article 模块与 user 模块结构完全同构controller → service → repository → entity是标准的增删改查业务模板。当你要新增一个业务域比如订单、商品只需照此结构复制一份再在 app.module.ts 中导入即可——这就是模块化单体架构最爽的地方每个领域自成一包内部高内聚之间低耦合。⑤ shared 模块所有模块共享的地基shared.module.ts 是全应用的基础设施层其他模块都依赖它配置中心ConfigModule统一管理.env环境变量数据库、JWT 密钥、端口数据库连接TypeOrmModule全局注册 Postgres 连接实体按约定路径自动扫描winston 日志AppLoggerModule提供结构化日志能力全局异常过滤器AllExceptionsFilter兜底捕获所有未处理异常统一返回错误格式日志拦截器LoggingInterceptor记录每个请求的处理耗时中间件request-id.middleware.ts注入请求追踪 ID简单说业务模块负责做什么shared 模块负责怎么跑。⑥ 外围基建区数据演进与质量保障根目录下还有四个非 src区域构成项目的工程化保障migrations/TypeORM 迁移文件CreateUsers.ts数据库结构随代码版本可追溯地演进test/E2E 端到端测试覆盖 app、auth、user、article 四大场景scripts/generate-jwt-keys 一键生成 JWT 密钥对npm脚本让 Docker 内外命令行为一致docs/架构文档与 middleware.md 等专项说明请求生命周期6大模块如何协同工作以一个用户登录请求为例完整走一遍架构请求进入 →RequestIdMiddleware打上追踪 ID经过ValidationPipe校验参数合法性路由到 auth.controller.tslocal.strategy.ts验证用户名密码AuthService调用 UserModule 查询用户签发 JWT返回 access refresh tokenLoggingInterceptor记录耗时若中途抛错AllExceptionsFilter统一格式化返回一条请求横向穿越 shared、auth、user 三个模块——模块间协作清晰但各自职责独立这正是单体架构好维护的关键。快速上手3步本地启动指南想亲手体验这套架构三步即可跑起来git clone https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-api cd nestjs-starter-rest-api npm install cp .env.template .env ./scripts/generate-jwt-keys然后把生成的 JWT 公钥/私钥 base64 值填入.env执行npm run start即可。访问http://localhost:3000/swagger你将看到一个文档齐全的 REST API——这就是这套 starter kit 的交付水准。小结这套架构给新手的3个启示单体不等于混乱按领域划分模块user / auth / article每个模块内部严格分层未来需要拆分微服务时成本极低安全体系一次到位JWT 双 Token RBAC ACL 三层防护避免了先上线后补安全的常见陷阱基建与业务分离shared 模块承载配置、日志、异常处理等横切关注点业务模块保持纯粹对于想快速交付企业级 Node.js 后端的新手而言读懂这 6 大模块的设计逻辑你就掌握了 NestJS 单体架构的核心骨架。【免费下载链接】nestjs-starter-rest-apiNestJS Starter Kit. Monolithic Backend. REST API.项目地址: https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表