NestJS 最佳实践
单一职责
每个组件只做自己的核心工作,避免 “万能组件”(如不要在守卫里做参数校验)。
shell
# 中间件首选
请求日志、CORS、限流
需要修改 req/res 或提前终止请求
# 守卫首选
角色权限、接口访问控制
需要判断权限
# 管道首选
DTO 校验、参数类型转换
需要校验 / 转换参数
# 拦截器首选
统一响应、缓存、耗时统计
需要增强请求 / 响应(如统一格式、缓存)
# 异常过滤器首选
自定义异常响应、异常日志
需要统一异常响应全局和局部
- 通用逻辑(日志、CORS、统一响应):注册为全局组件;
- 专属逻辑(角色权限、特定参数校验):局部注册(控制器 / 方法级)。
内置组件优先
优先使用 Nest 内置的 ValidationPipe、HttpExceptionFilter 等,自定义仅补充差异化逻辑。
异常分层
系统异常(如 500)用全局异常过滤器,业务异常(如 400)用自定义异常过滤器,避免混为一谈。
