카테고리 없음

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

Laftel 2025. 3. 14. 17:38
반응형

***본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
PATCH API를 다시 작성해보겠다.
PATCH는 특정ID 값을 갖고있는 영화를 우리가 변경할 때 사용한다.
그렇기 때문에 어떤 특정 ID인지를 알기 위해서, "ID" 패스 파라미터도 추가하였다.
put 요청을 했는 데, 만약에 존재하지 않으면,  그냥 생성을 해버리게 할 수 있어요.
사용자 입장에서 봤을 때, 생소한 기능 같은 거  
무언가를 업데이트 하겠다. 수정하겠다 " 라는 UI로 들어가서 무언가를 수정할 의도를 갖고 있는 상태에서는 해당 ID에 
어떤 값이 존재하지 않으면은 당연히 우리가 알려줘야 한다. Error로 알려줘야 한다
ex. 내가 수정하는 순간에 , 다른 사람이 로그인해가지고  내가 수정하던 영화를 삭제를 할 수도 있다. 

@Patch(':id')
  patchMovie(
    // @Param('id') id: string,
    // @Body('title') title : string,
  ){
    return {
      id: 3,
      name: '어벤져스',
      Character: ['아이언맨','블랙위도우'],
    }
  }
 
 

기존 코드의 문제점

  • 요청한 id의 영화 데이터를 수정하지 않음
    • 클라이언트가 특정 영화의 title을 수정하려고 요청을 보내도, 실제 영화 데이터는 변경되지 않음.
    • 단순히 하드코딩된 JSON을 반환할 뿐임.
  • 매개변수(@Param, @Body)가 주석 처리됨
    • @Param('id') id: string: 요청에서 id 값을 받아야 하지만 주석 처리되어 있음.
    • @Body('title') title: string: 클라이언트가 보낸 title 값을 받아야 하지만 주석 처리됨.
  • 영화 목록(this.movies)을 전혀 수정하지 않음
    • 영화 데이터는 this.movies 배열에 저장되어 있음.
    • 특정 영화를 찾아서 수정해야 하지만, 단순히 새로운 객체를 반환할 뿐 기존 데이터에는 영향을 주지 않음.

 
 

@Patch(':id')
  patchMovie(
    @Param('id') id: string,
    @Body('title') title : string,
  ){
   const movie=this.movies.find(m=>m.id===+id);
   if(!movie){
    throw new NotFoundException('존재하지 않는 ID의 영화입니다');
  }
  Object.assign(movie, {title});
  return movie;  
  }

변경

변경된 코드의 장점

요청한 id의 영화를 찾아서 실제 데이터(this.movies)를 수정할 수 있음
 id가 존재하지 않으면 예외 처리(NotFoundException)를 통해 적절한 응답을 반환
Object.assign()을 사용해 깔끔하고 직관적으로 속성 변경
수정된 영화 데이터를 클라이언트에게 반환하여 상태를 확인 가능

이제 클라이언트가 PATCH /movie/:id 요청을 보낼 때, 해당 영화의 title을 실제로 수정할 수 있게 되었습니다!

 


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

반응형