主题
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 来源应使用明确白名单,不能将携带凭据的接口配置为任意来源。
