SuperAPI AI 工具集

nestjs

编程与开发

查看项目

更新于 10-15 19:54

技能介绍

用途:这是一套用于 NestJS v11 / Express 5 后端代码的团队约定,在编写或修改代码时应用;未被要求时不重构无关模块。

主要能力:明确两层结构——core/ 放领域与基础设施(无控制器、无 HTTP),app/ 放特性(控制器、DTO、守卫、中间件、CQRS);依赖只能从 app 指向 core,反向依赖应把概念下移。约定模块只拥有一个领域且根 barrel 只导出 .module.ts;控制器只做 HTTP 转换与委派,业务逻辑放服务;请求体、查询、参数一律经带 class-validator 的 DTO,并置于 ValidationPipe(whitelist: true、forbidNonWhitelisted: true、transform: true)之后;响应使用 DTO 而非实体;领域错误继承统一基类并由单个全局过滤器渲染;全局增强器用 APP_GUARD / APP_PIPE / APP_INTERCEPTOR / APP_FILTER 注册;领域服务不直接引用厂商 SDK,而由包装模块隔离。

用法:按改动类型查阅对应参考文件,如架构、依赖注入、请求生命周期、DTO 校验与 OpenAPI、错误、配置与日志、生态包、v11 迁移等,不必预先全读;测试参考 cortex-testing:conventions 技能的 NestJS Jest 部分。

需注意的默认易错行为:Express 5 通配符必须命名,如 @Get("files/*splat")、forRoutes("{*splat}"),:param? 已移除;异常过滤器解析顺序为路由→控制器→全局,与守卫和管道相反,拦截器为先进后出;使用 @Res() 会退出框架响应处理,需加 { passthrough: true };ClassSerializerInterceptor 只转换类实例;@nestjs/cache-manager 与 @nestjs/throttler 的 ttl 单位为毫秒,且缓存 ttl: 0 表示永不过期;ClientProxy.send() 与 HttpService 返回冷 Observable,需订阅才执行。部分内容为版本相关,应用前应检查 package.json 中的 @nestjs/core,旧项目可读迁移参考。

限制:资料仅给出仓库内相对参考文件名,未提供其具体 URL、安装命令或价格。