반응형

main.ts 에서 config, document 변수를 SwaggerModule에 넣는다.

// main.ts

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

  const config = new DocumentBuilder()
    .setTitle('Unicorn')
    .setDescription('Unicorn API description')
    .setVersion('1.0')
    .addTag('unicorn')
    .build();

  const document = SwaggerModule.createDocument(app, config);
  SwaggerModule.setup('api', app, document);

  const port = process.env.PORT;
  await app.listen(port);
}
bootstrap();

 

Controller의 Tag 부여

@ApiTags('domains')
@Controller('domains')
export class DomainController {
	constructor(private readonly domainService: DomainService) {}
  ...
}

 

api 설명 부여하기

@ApiTags('scenario')
@Controller('domains')
export class ScenarioController {
	constructor(private readonly scenarioService: ScenarioService) {}

	@ApiOperation({ summary: '해당 도메인의 모든 시나리오 검색' })
	@Get('/:domain/scenarios')
	async getAllScenarios(@Param('domain') domain: string): Promise<Scenario> {
		return this.scenarioService.getAllScenarios(domain);
	}

	...
}

 

Schemas 적용

@ApiTags('authorization')
@Controller('authorization')
export class AuthorizationController {
	constructor(private readonly authorizationService: AuthorizationService) {}

	@ApiBody({ type: searchAdminDto })
	@Post()
	async searchAdmin(
		@Body('adminData') adminData: searchAdminDto,
		): Promise<boolean> {
		return this.authorizationService.checkAdmin(adminData);
	}
}

Body 로 들어오는 DTO를 ApiBody 데코레이터로 알려주고, DTO의 필요한 값들을 ApiProperty 데코레이터를 사용하면 된다.

 

export class searchAdminDto {
    @ApiProperty()
    @IsString()
    id: string;

    @ApiProperty()
    @IsString()
    pw: string;    
}

 

📌 ApiBody 데코레이터은 하나의 메서드 당 한 번만 사용 두 개 이상 사용 시 마지막 데코레이터로 적용된다.

 

@ApiProperty 데코레이터

export class searchAdminDto {
    @ApiProperty({
        type: String,
        default: 'default string',
        description: '사원번호'
    })
    @IsString()
    id: string;

    @ApiProperty({
        type: String,
        description: '비밀번호'
    })
    @IsString()
    pw: string;    
}

      •  

 

반응형

'Backend > Nestjs' 카테고리의 다른 글

[NestJS] JWT AuthGuard/Strategy  (0) 2024.01.04
[NestJS] NestJS 란?  (0) 2022.06.10
[NestJS] E2E Testing  (0) 2022.02.27
[NestJS] 유닛 테스트(Unit Testing)  (0) 2022.02.16
[NestJS] Docker 304 undefined 에러  (0) 2022.02.14

+ Recent posts