import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { ValidationPipe } from '@nestjs/common'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); // 全局启用校验管道(核心配置) app.useGlobalPipes( new ValidationPipe({ whitelist: true, // 过滤掉 DTO 中未定义的字段(比如传了个 `age` 但 DTO 里没有,会自动忽略) forbidNonWhitelisted: true, // 若传了未定义的字段,直接报错(防止传多余参数) transform: true, // 自动把入参转为 DTO 对应的类型(比如前端传的字符串数字 `'1'` 转为数字 `1`) }), ); // 配置Swagger文档 const config = new DocumentBuilder() .setTitle('Pixel Game Server API') .setDescription('像素游戏服务器API文档 - 包含用户认证、登录注册等功能') .setVersion('1.0.0') .addTag('auth', '用户认证相关接口') .addBearerAuth( { type: 'http', scheme: 'bearer', bearerFormat: 'JWT', name: 'JWT', description: '请输入JWT token', in: 'header', }, 'JWT-auth', ) .build(); const document = SwaggerModule.createDocument(app, config); SwaggerModule.setup('api-docs', app, document, { swaggerOptions: { persistAuthorization: true, }, }); await app.listen(3000); console.log('Pixel Game Server is running on http://localhost:3000'); console.log('API Documentation is available at http://localhost:3000/api-docs'); } bootstrap();