없는 영화 아이디를 요청하는 예외처리


만약에 http://localhost:3000/movies/111111 과 같이 id값에 해당하는 영화가 없으면 어떻게 해야할까?

그럴 때는 웹브라우저에게 404 상태코드를 보내서 오류를 표시해야한다.

movies.servicegetOne 함수를 이렇게 수정한다.

// id를 받아와서 id값에 만족하는 첫번째 요소의 값을 반환함.
getOne(id: string): Movie {
  const movie = this.movies.find((movie) => movie.id === +id);
  if (!movie) {
    **throw new NotFoundException(`Movie with ID ${id} not found.`);**
  }
  return movie;
}

다시 get요청을 보냈을 때의 결과

다시 get요청을 보냈을 때의 결과

Nest.js는 NotFoundException과 같이 간편하게 오류 상태코드를 전송할 수 있는 오류 객체들을 가지고 있다.

deleteOne()update()도 없는 id에는 예외 처리를 해야 하므로 추가해준다.

다행히도 id 값을 통해 getOne() 메서드를 한번씩만 호출해주면 된다.

두 메서드를 이와 같이 수정한다.

deleteOne(id: string) {
  **this.getOne(id);**
  this.movies = this.movies.filter((movie) => movie.id !== +id);
}

update(id: string, updateData) {
  **const movie = this.getOne(id);**
  this.deleteOne(id);
  this.movies.push({ ...movie, ...updateData });
}

의도치 않은 데이터의 예외처리


service의 create() 메서드와 update() 메서드를 다시 확인해보자.

create(movieData) {
  this.movies.push({
    id: this.movies.length + 1,
    ...movieData,
  });
}

update(id: string, updateData) {
  const movie = this.getOne(id);
  this.deleteOne(id);
  this.movies.push({ ...movie, ...updateData });
}

create() 메서드는 movieData라는 이름으로 생성할 데이터가 들어오고,

update() 메서드는 updateData라는 이름으로 업데이트 할 데이터가 들어온다.

하지만 이때 update 요청으로 의도하지 않은 데이터가 들어오면 어떻게 될까?