Skip to content

NestJS

NestJS 是基于 Node.js 和 TypeScript 的服务端框架。它通过模块、依赖注入与装饰器组织应用;默认基于 Express,也可使用 Fastify。

核心组成

概念职责
Module组织业务边界,并声明可用的控制器与提供者。
Controller接收 HTTP 请求,提取输入,返回响应。
Provider可注入的依赖;常见形式为承载业务逻辑的服务。
Pipe转换、校验请求数据。
Guard判断请求是否有权继续执行。
Interceptor在调用前后扩展行为,如日志、缓存、响应转换。
Exception Filter将异常转换为统一的错误响应。

启动配置

全局配置应在 main.ts 集中注册;业务模块只声明本领域的控制器和提供者。

ts
import { ValidationPipe } from '@nestjs/common'
import { NestFactory } from '@nestjs/core'

import { AppModule } from './app.module'

async function bootstrap() {
  const app = await NestFactory.create(AppModule)

  app.setGlobalPrefix('api')
  app.enableCors({ origin: process.env.WEB_ORIGIN?.split(',') })
  app.useGlobalPipes(
    new ValidationPipe({
      whitelist: true,
      forbidNonWhitelisted: true,
      transform: true,
    }),
  )

  await app.listen(process.env.PORT ?? 3000)
}

void bootstrap()

whitelist 删除 DTO 未声明字段,forbidNonWhitelisted 将这类字段视为 400 错误,transform 根据 DTO 类型转换输入。生产环境的 CORS 来源应使用明确白名单,不能将携带凭据的接口配置为任意来源。

基于 MIT 许可发布