-
NestJs Swagger Header 추가Project/NYAM 2023. 1. 2. 17:07
NestJs Swagger add Header
NestJs Swagger add prefix url path
가정 : swagger 설치 후
상황 :
2개의 Custom Header
x-token : accessToken - JWT
x-type : "admin" ,"owner", "user"
main.ts file 에
.addApiKey(
{
type: 'apiKey',
name: 'x-token',
in: 'header',
description: 'Enter token',
},
'x-token',
)을 추가해준다.
code
import { ConfigService } from '@nestjs/config'; import { NestFactory } from '@nestjs/core'; import { NestExpressApplication } from '@nestjs/platform-express'; import { join } from 'path'; import { AppModule } from './app.module'; import { HttpExceptionFilter } from './common/exceptions/http-exception.filter'; import { SuccessInterceptor } from './common/interceptors/success.interceptor'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create<NestExpressApplication>(AppModule); const configService = app.get(ConfigService); const port = configService.get('server.port'); app.enableCors({ origin: true, credentials: true, }); app.useStaticAssets(join(__dirname, '..', 'client'), { prefix: '/api/v1/client', }); app.useGlobalInterceptors(new SuccessInterceptor()); app.useGlobalFilters(new HttpExceptionFilter()); app.setGlobalPrefix('api/v1'); const swagger_options = new DocumentBuilder() .setTitle('Docs') .setDescription('API description') .setVersion('1.1.0') .addApiKey( { type: 'apiKey', name: 'x-token', in: 'header', description: 'Enter token', }, 'x-token', ) .addApiKey( { type: 'apiKey', name: 'x-type', in: 'header', description: 'Enter type', }, 'x-type', ) .build(); const document = SwaggerModule.createDocument(app, swagger_options); SwaggerModule.setup('api-docs', app, document); await app.listen(port, '0.0.0.0'); console.log('Application Listening on Port : ', port); } bootstrap();
기존 :@UseGuards 2개가 걸려있다. Authguard : jwt token check , RolesGuard : Role check
@Get('/list') @ApiSecurity('x-token') @ApiSecurity('x-type') @UseGuards(AuthGuard, RolesGuard) @Roles(Role.ADMIN) async user_list_admin() { const list = await this.userService.UserList(); const user_list = await Promise.all( list.map((e) => this.userService.user_mange_data(e)), ); return { user_list: user_list }; }
----------------------------------------------------------------------------------------------------------------------
서버 실행후
주소 :
http://localhost:3003/api-docs 로 접속한다.
Authorize 자물쇠 버튼을 누른다. header 에 postman 에서 넘겨 준 것 과 같은 정보를 넘겨준다
확인
굿! 'Project > NYAM' 카테고리의 다른 글
AWS s3 객체 url 접근 (0) 2023.02.03 Package.json 스크립트 작성 (0) 2023.01.19 앱 심사로 인한 서버 버전 관리 문제(feat , 무중단 배포) (1) 2023.01.09 [Errno 13] Permission denied: '/var/log/letsencrypt/.certbot.lock' (0) 2023.01.09 서버를 날렸습니다! (1) 2022.12.10