티스토리 뷰
728x90
반응형
nestjs는 class-validator와 함께 강력한 validationpipe 기능을 제공하고 있습니다
dto를 통해서 입력된 값의 validation을 체크할수 있습니다
export class CreateUserDto {
@IsNotEmpty()
@IsString()
username: string;
}
이런식으로 dto 클래스의 원하는 필드에 어노테이션을 추가하면
username은 반드시
1. 값은 string 타입이어야 합니다
2. 값을 가지고 있어야 합니다
만약 값이 입력되지 않는 경우 두개의 validation 규칙을 모두 어기게 되는것이지요
{
"statusCode": 400,
"message": [
"username must be a string",
"username should not be empty"
],
"error": "Bad Request"
}
이렇게 두개의 어노테이션에 대한 에러가 모두 출력됩니다
그런데 흔히볼수 있는 입력폼을 가진 UI 에서는 하나의 입력필드에 에러가 있는 경우 2개이상의 에러를 한번에 보여주지는 않습니다
그런경우 UI단에서 에러가 여러개 있는경우 첫번째 에러메시지만 보여주는 방법을 선택할수도 있고
서버에서 의도적으로 하나의 에러만 리턴할수 있습니다
그럴때는 validationpipe의 stopAtFirstError 옵션을 true로 전달하세요
app.useGlobalPipes(
new ValidationPipe({
transform: true,
stopAtFirstError: true,
}),
);
그러면 이렇게 하나의 필드에 여러개의 어노테이션이 설정되어있는경우 에러가 먼저 발견되는경우 해당 에러만 표시하고 바로 넘어갑니다
그래서 이러한 결과를 만날수 있습니다
{
"statusCode": 400,
"message": [
"username must be a string"
],
"error": "Bad Request"
}
어노테이션은 가장 아래에 있는 어노테이션 부터 차례대로 실행이 됩니다
그래서 가장 아래에 있는
@IsString의 결과값이 보여지게 되었습니다
728x90
반응형
'BACKEND' 카테고리의 다른 글
aws에서 nodejs 16버전을 쓰고 싶으시다구요? (0) | 2023.04.21 |
---|---|
mongoose, nestjs에서 discriminator 사용해보기 (1) | 2023.04.20 |
nestjs API Rate Limit 적용하기 (0) | 2023.01.17 |
[nestjs] versioning 기능 이용하기 (1) | 2022.09.19 |
[nestjs] whitelist 로 파라메터를 안전하게 사용하기 (0) | 2022.09.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Apple
- iPhone
- 앱스토어
- 어플리케이션
- CSS
- 아이디어
- 앱
- 애플
- 웹표준
- 소프트웨어
- php
- 경진대회
- 자바스크립트
- android
- AWS
- 게임
- 창업
- 아이폰
- 안드로이드
- 공모전
- 벤처
- 구글
- 트위터
- 모바일
- 스마트폰
- JavaScript
- 대학생
- 네이버
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함