1. 문제
import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsSemVer } from 'class-validator';
import semver from 'semver';
export enum OS {
AOS = 'AOS',
IOS = 'IOS',
}
export class ExampleDto {
@ApiProperty({
example: '1.0.0',
})
@IsSemVer()
version: string;
@ApiProperty({
example: 'IOS',
})
@IsEnum(OS)
os: OS;
}
Nest에서 특정 dto를 생성할 때 Enum 타입일 경우 swagger 문서에 표시되지 않았다.
위 코드의 경우 version
은 문서에 표시되고 os
는 표시되지 않은 것을 볼 수 있다.
2. 해결
import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsSemVer } from 'class-validator';
import semver from 'semver';
export enum OS {
AOS = 'AOS',
IOS = 'IOS',
}
export class ExampleDto {
@ApiProperty({
example: '1.0.0',
})
@IsSemVer()
version: string;
@ApiProperty({
example: 'IOS',
type: 'enum', <<<<==============
})
@IsEnum(OS)
os: OS;
}
@ApiProperty({})
안에 type: 'enum'
을 추가해주면 된다.
import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsSemVer } from 'class-validator';
import semver from 'semver';
export enum OS {
AOS = 'AOS',
IOS = 'IOS',
}
export class ExampleDto {
@ApiProperty({
example: '1.0.0',
})
@IsSemVer()
version: string;
@ApiProperty({
example: 'IOS',
type: 'enum',
enum: OS, <<<<==============
})
@IsEnum(OS)
os: OS;
}
enum: OS
까지 추가하면 문서에 가능한 Enum 값까지 표시되니 기왕이면 enum
프로퍼티까지 추가해주자.