카테고리 없음

패스트캠퍼스 환급챌린지 18일차 : 코드팩토리의 백엔드 아카데미 : 한 번에 끝내는 NestJS 패키지 - 기초부터 MSA까지 강의 후기

Laftel 2025. 3. 22. 23:13
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
Nest js DTO
필드가 늘어날때마다, 일일히 하나씩 바디 값을 추가로 넣어주는 거 굉장히 비 효율적이다.
이거를 DTO를 이용해서 해결할 수 있다.
src폴더 => movie api 폴더=> dto 폴더 생성=> create-movie.dto.ts 생성
그 다음에 컨트롤러에서 받을 값들을 그대로 클래스 형태로 넣어준다 

export class CreateMovieDto {
  title: string;
  genre: string;
}
 

타이틀과 장르가 crete를 할때는 무조건 필수다. 새로운 걸 만드니까
하지만, Patch는  둘 다 옵셔널로 만들어야 한다. 
그래서 update-movie.dto.ts 파일 생성

export class UpdateMovieDto  {
  title?: string;
  genre?: string;
}
 
@Post()
  postMovie(
    @Body() body: CreateMovieDto,
  ){
    this.movieService.createMovie(
      body);
   
  }
  @Patch(':id')
  patchMovie(
    @Param('id') id: string,
    @Body() body:UpdateMovieDto,
  )
    return this.movieService.updateMovie(
      +id,
      body);
  }
createMovie(CreateMovieDto: CreateMovieDto){
    const movie: Movie = {
          id : this.idConunter++,
          ...CreateMovieDto,
         
        };
        this.movies.push(
          movie,
      );
        return movie;
  }
  updateMovie(id:number,UpdateMovieDto: UpdateMovieDto,){
    const movie=this.movies.find(m=>m.id===+id);
    if(!movie){
     throw new NotFoundException('존재하지 않는 ID의 영화입니다');
   }
   Object.assign(movie, UpdateMovieDto);
   return movie;  
  }

컨트롤러,서비스 파일 수정
DTO를 이용하여 변경한 이유

변경 이유

  • CreateMovieDto는 데이터 구조를 명확하게 정의한 객체입니다.
  • ...dto로 확장하면 title, director, year 등 필요한 속성을 자동으로 할당할 수 있어 가독성과 확장성 향상.
  • 새로운 필드가 추가되어도 서비스 코드는 변경이 거의 없음.

 

  • 요청 바디 전체를 DTO(CreateMovieDto)로 받기 때문에 구조가 명확하고, 여러 필드를 한 번에 처리 가능.
  • @Body() 하나로 요청을 통째로 받고, 타입을 지정하면 자동 타입 추론IDE 자동완성 지원.
  • 이후 **class-validator**를 추가하면 유효성 검사도 DTO에서 처리 가능 (예: @IsString(), @Length() 등).

정리

DTO 사용 이유

  1. 입력 데이터 구조를 명확하게 정의할 수 있음
  2. 확장성과 재사용성 높음 (필드 추가 시 유연함)
  3. NestJS의 유효성 검증 시스템(class-validator)과 자연스럽게 연동
  4. 컨트롤러가 깔끔해지고, 서비스와의 데이터 전달이 일관적
  5. IDE 자동완성 및 타입 안정성 확보

 
Body를 클래스 형태로 관리할 수 있다.
클래스 형태로 관리하면, 실제 서비스에다가 파라미터들을  전달하는데 훨씬 편하다. 재사용 할 수 있다.


#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
https://bit.ly/4hTSJNB

반응형