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"
}
}