• Home
  • About
    • lahuman photo

      lahuman

      열심히 사는 아저씨

    • Learn More
    • Facebook
    • LinkedIn
    • Github
  • Posts
    • All Posts
    • All Tags
  • Projects

nestjs swagger에서 enum validate 처리 하기

06 Sep 2022

Reading time ~1 minute

nestjs swagger에서 enum validate 처리 하기

문서나 인터넷을 찾아보면 ApiProperty에 enum이용하면 validate가 되는것 처럼 설명되어 있으나 동작하지 않습니다.

IsEnum 이라는 Annotation을 이용하면 해결이 되네요.

import { ApiProperty } from '@nestjs/swagger';
import { IsEnum, IsNotEmpty, IsNumber, IsString } from 'class-validator';
enum TCD {
  DQST = 'DQST',
  DLDR = 'DLDR',
  DNIF = 'DNIF',
  DROP = 'DROP',
  CQST = 'CQST',
  CLDR = 'CLDR',
  CNIF = 'CNIF',
  CROP = 'CROP',
}

export class CreateCmtPostDDto {
  @ApiProperty({
    description: '게시글 유형 코드', 
  })
  @IsNotEmpty()
  @IsEnum(Object.values(TCD))
  pstTcd: TCD;
}

Swagger API를 찾아보아도않습니다.

enum 값이 아닌 다른 값을 넣었을때 결과는 아래와 같습니다.

{
    "statusCode": 400,
    "error": "Bad Request",
    "path": "/v1/cmtPost",
    "method": "POST",
    "timeStamp": "2022-09-07T06:07:29.632Z",
    "request": {
        "statusCode": 400,
        "message": [
            "pstTcd must be a valid enum value"
        ],
        "error": "Bad Request"
    }
}

참고 자료

NestJS - Swagger - Show all enum values



nestjsdebug Share Tweet +1