
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),僅供參考