restAPI의 put 과 patch의 차이점?

3272 단어 restapirestapi

제가 알기론 PUT과 PATCH는 둘다 update작업을 할때 사용하는 RestAPI라고 알고있습니다.
그 차이점이 궁금해서 이번 포스트를 쓰게 되었습니다.

PUT vs PATCH

쉽게 설명을 하면 Patch요쳥은 자원에 대한 부분적인 수정을 적용하기 위한 HTTP 메서드이고
PUT요청은 기존 값을 유지하면서 새 값을 덮어 씌웁니다.

2가지의 예시에 따라 PUT을 사용할지 PATCH 를 사용할지 나뉠수 있습니다.

1. 유저가 포스트를 좋아요 클릭했을 경우

@Entity
public class Like {
  
  @Id
  private Long id;
  
  private Long articleId;
  
  private Long userId;
  
  private LikeType likeType;   //** liked or disliked
    
  ...
}

예를 들면 아래와 같은 좋아요관련 Like 엔티티가 존재한다고 치면
클라이언트에서 액션을 받을 때 articleId(어떤 게시물에 대한 건지), userId(누가 좋아요를 한건지), 그리고 type(좋아요/싫어요) 이 세가지 정보가 모두 필요합니다.
유저가 처음으로 좋아요(혹은 싫어요)를 눌렀다면, 생성이 되어야할 것이고, 기존에 누른 적이 있다면 다른 타입으로 토글(수정) 되거나, 취소가 되어야 합니다.
즉 업데이트를 할경우 엔티티의 모든 정보가 필요하는 경우 PUT을 사용하는것이 좋습니다.

2. 회원 정보를 수정하는경우

@Entity
public class user {
  
  @Id
  private Long id;
  
  private String userID;
  
  private String userPW;
  
  private String nickname;   
    
  ...
}

이와 반대로 회원 정보를 수정하는 경우는 크게 nickname을 많이 수정을 합니다. 즉 이 경우에는 모든 정보가 필요가 없습니다. id값만 가지고 있다면 이 회원이 누구인지 찾을 수 있고 그리고 바꿀 nickname만 가져와서 nickname을 바꿔주면 되기 때문에 이경우에는 PATCH를 사용하는 것이 맞을거 같습니다.

결론

PUT과 PATCH는 HTTP 메서드이지만 규약일 뿐 특정 행동을 강제할 수 없습니다.
하지만 이러한 규약은 모두가 동의한 약속이고 클라이언트와 서버 간의 통신에서 혼란이 발생하지 않도록 정의를 잘 알고 사용하는 것이 좋다고 합니다.

좋은 웹페이지 즐겨찾기