Nestjs에서 기본적으로 제공하는 ValidationPipe를 이용하면 요청 Parameter의 유효성을 쉽게 체크하고 처리할 수 있습니다.
예를 들면 필수 입력 값의 경우 @IsNotEmpty를 사용하는 것만으로 유효성 체크가 끝이 납니다.
사용자 등록시 아이디와 패스워드를 필수 값으로 처리하는 방법에 대해 알아보겠습니다.
이전 예제에서 사용자 등록시 Input Parameter는 아래의 UserDTO를 사용하였습니다.
src/auth/dto/user.dto.ts
export class UserDTO {
username: string;
password: string;
}
이 경우에 username을 빈값으로 보내게 되어도 다음과 같이 회원 가입이 됩니다.
db에는 다음과 같이 id 3번 값이 공백으로 들어가게 됩니다.
공백이 입력되는 것을 막는 ValidationPipe를 사용해 보겠습니다.
우선 class-validator 패키지를 설치합니다.
npm i --save class-validator
UserDTO에서 "@IsNotEmpty()" 데코레이터를 추가합니다.
src/auth/dto/user.dto.ts
import { IsNotEmpty } from "class-validator";
export class UserDTO {
@IsNotEmpty()
username: string;
@IsNotEmpty()
password: string;
}
회원가입 라우팅 메소드에 "@UsePipes(ValidationPipe)"를 추가합니다.
src/auth/auth.controller.ts
import { Body, Controller, Get, Post, Req, Res, UseGuards, UsePipes, ValidationPipe } from "@nestjs/common";
...
@Post('/register')
@UsePipes(ValidationPipe)
async registerAccount(@Req() req: Request, @Body() userDTO: UserDTO): Promise<any> {
return await this.authService.registerUser(userDTO);
}
...
이제 다시 위와 동일하게 username을 공백으로 API를 호출합니다.
* 이때 Validation 체크가 되지 않을 경우 "npm run build"를 한번 실행 후에 하시면 됩니다.
결과는 400 에러가 나오고 , username은 반드시 입력해야 한다는 메시지가 나옵니다.
class-validator의 데코레이터는 다음 사이트에가면 확인하실 수 있습니다.
https://github.com/typestack/class-validator#manual-validation
'Nestjs 기초 동영상강좌' 카테고리의 다른 글
NestJS - 18. 설정 파일 & 환경 변수 관리 (4) | 2022.03.01 |
---|---|
NestJS - 17. 쿠키 다루기(JWT토큰) (0) | 2022.02.27 |
NestJS - 15. TypeORM 설정파일 분리하기 (0) | 2022.02.12 |
NestJS - 14. 권한 체크 (Role - Admin, User) (0) | 2022.02.02 |
NestJS - 13. JWT 토큰 인증 - Guard (2) | 2022.01.31 |
NestJS - 12. JWT 토큰 생성 (0) | 2022.01.30 |
NestJS - 11. 비밀번호 암호화(bcrypt) (2) | 2022.01.29 |
NestJS - 10. 로그인 #1 - 아이디/패스워드 체크 (0) | 2022.01.23 |