Nest에서 Enum 타입이 swagger 문서에 안 나올때

유석현(SeokHyun Yu)·2023년 2월 13일
0

문제 해결

목록 보기
10/11

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 프로퍼티까지 추가해주자.

profile
Backend Engineer

0개의 댓글