개발 공부/Node.js

REST API의 put 과 patch 는 어떤 차이점

solutionMan 2022. 7. 22. 15:52
반응형

REST API의 put 과 patch 는 어떤 차이점이 있을까요?

HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다.

리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만

두개의 요청에는 약간의 차이가 있다.

 

PUT : 리소스의 모든 것을 업데이트 한다.

PATCH : 리소스의 일부를 업데이트 한다.


예를 보면서 같이이해 

 

아래와 같은 회원이라는 리소스가 있다.

회원 (member) 1
이름 (name) 애용이
나이 (age) 10
성별 (gender) M

 

아래와 같은 요청을 보내면 

 

PUT /members/1

{

    name : "홍길동",

    age : 19,

    gender : "M"

}

 

회원 (member) 1
이름 (name) 홍길동
나이 (age) 19
성별 (gender) M

위와 같이 변한다.

 

 

이번에는 나이와 성별를 빼고 요청을 보내면

PUT /members/1

{

    name : "김길순"

}

 

회원 (member) 1
이름 (name) 김길순
나이 (age)  
성별 (gender)  

보내지지 않은 값에 대해서는 null 값으로 변하는 것이다.

 

 

 

 

다시 아래와 같은 회원이라는 리소스가 있다.

회원 (member) 1
이름 (name) 애용이
나이 (age) 10
성별 (gender) M

 

아래와 같은 요청을 보냈을때

PATCH  /members/1

{

    name : "김길순"

}

 

회원 (member) 1
이름 (name) 김길순
나이 (age) 10
성별 (gender) M

 

요청에 포함되어 있는 부분만 변경이 된다는 차이점이 있다.

물론 이 위의 경우는 개발자가 구현하기 나름이지만 이런식으로 구현하는 것을 권장한다.

 


어떤경우에  각각의 기능을 사용하면 좋을까??

PUT요청은 기존 값을 유지하면서 새 값을 덮어 씌웁니다.

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

 

 

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

좋아요관련 Like 엔티티가 존재한다고 치면
클라이언트에서 액션을 받을 때 articleId(어떤 게시물에 대한 건지),

userId(누가 좋아요를 한건지), 그리고 type(좋아요/싫어요) 이 세가지 정보가 모두 필요합니다.
유저가 처음으로 좋아요(혹은 싫어요)를 눌렀다면, 생성이 되어야할 것이고,

기존에 누른 적이 있다면 다른 타입으로 토글(수정) 되거나, 취소가 되어야 합니다.
즉 업데이트를 할경우 엔티티의 모든 정보가 필요하는 경우 PUT을 사용하는것이 좋아보인다.

 

 

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

이와 반대로 회원 정보를 수정하는 경우는 크게 nickname을 많이 수정을 합니다.

즉 이 경우에는 모든 정보가 필요가 없습니다. id값만 가지고 있다면 이 회원이 누구인지 찾을 수 있고

그리고 바꿀 nickname만 가져와서 nickname을 바꿔주면 되기 때문에 이경우에는 PATCH를 사용하는 것이 좀더 바람직해보인다.

 

 

 


레퍼런스

 

HTTP 메소드 PUT , PATCH 차이 - 삽질중인 개발자

HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미한다. 리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만 두개의 요청에는 약간의 차이가 있다. PUT : 리소스의 모든

programmer93.tistory.com

 

 

restAPI의 put 과 patch의 차이점?

제가 알기론 PUT과 PATCH는 둘다 update작업을 할때 사용하는 RestAPI라고 알고있습니다.그 차이점이 궁금해서 이번 포스트를 쓰게 되었습니다.쉽게 설명을 하면 Patch요쳥은 자원에 대한 부분적인 수

velog.io

 

반응형