import { INestApplication, Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { API_SECURITY_AUTH } from './common/decorators/swagger.decorator'; import { CommonEntity } from './common/entity/common.entity'; import { ResOp, TreeResult } from './common/model/response.model'; import { ConfigKeyPaths, IAppConfig, ISwaggerConfig } from './config'; import { Pagination } from './helper/paginate/pagination'; export function setupSwagger( app: INestApplication, configService: ConfigService ): void { const { name, port } = configService.get('app')!; const { enable, path } = configService.get('swagger')!; if (!enable) return; const documentBuilder = new DocumentBuilder() .setTitle(name) .setDescription(`${name} API document`) .setVersion('1.0'); // auth security documentBuilder.addSecurity(API_SECURITY_AUTH, { description: 'Auth', type: 'apiKey', in: 'header', name: 'Authorization' }); const document = SwaggerModule.createDocument(app, documentBuilder.build(), { ignoreGlobalPrefix: false, extraModels: [CommonEntity, ResOp, Pagination, TreeResult] }); SwaggerModule.setup(path, app, document); // started log const logger = new Logger('SwaggerModule'); logger.log(`Document running on http://127.0.0.1:${port}/${path}`); }