반응형
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 |