$ npm i class-validation class-transformer
예를들어 회원가입을 할 때 Email과 Password를 사용 시
Server에서 해당 Data를 그림처럼 각각 변수로 받아 줘야한다.
{
"Email" : "admin@test.com",
"Password": "admin",
}
@Post()
async create(
@Body("Email") Email: string,
@Body("Password") Password: string) :Promise<User> {
}
async create(
Email: string,
Password: string): Promise<User>{
const user: User = {
id: uuid(),
Email,
Password,
};
this.users.push(user);
return user; // NestJS는 반환값을 자동으로 JSON처리 해준다.
}
"id": "8kl2j3kl4jkljslf",
"Email": "Admin@test.com",
"Password": "admin",
Data Transform Object로 JAVA에서 파생된 개념이다.
DTO는 Class나 Interface로 작성 될 수 있다. 어떠한 방법으로 작성하는게 더 좋을까?
결론은 DTO작성은 Class로 하자!
DTO를 작성하고 Controller와 Service를 수정하자.
export class CreateUserDTO { // class 작성시 맨앞을 대문자로 해주자!
email : string;
password : string;
}
@Post()
async create(@Body() userData: CreateUserDTO ) :Promise<User> {
return this.userService.create(userData);
}
async create(userData: CreateUserDTO): Promise<User>{
const user: User = {
id: uuid(),
...userData
};
this.users.push(user);
return user; // NestJS는 반환값을 자동으로 JSON처리 해준다.
}