Spring MVC/02.Rest

[Spring] Update 시 Put vs Patch

  • -
반응형

이번 포스트에서는 REST API에서 자원 update 시 사용하는 Put과 Patch의 차이점에 대해서 살펴보자.

자료 출처: https://ko.wikipedia.org/wiki/HTTP

Put ? Patch?

REST API는 Http method를 통해서 API의 동작 의도를 나타낸다.  자료의 조회는 GET, 추가는 POST, 삭제는 DELETE이다. 그리고 자료의 수정을 나타낼 때는 PUT을 사용하는데 비슷한 녀석으로 PATCH라는 것도 있다.

 

결국은 영어인가. ㅜㅜ

정말 영어권에서 살면서 단어의 뜻을 명확히 구별할 수 있다면 이런 혼선이 훨씬 줄어들 것이라는 생각이 든다. 둘 다 수정을 뜻하기는 하지만 PUT은 새로운 녀석을 놓고 오는 것으로 대체를 의미한다 반면 PATCH는 땜빵으로 자원의 일부를 변경하는 것을 의미한다.

따라서 허허벌판에 집을 새우는 것은 POST이고 살면서 조금씩 조금씩 바꿔가는 것은 PATCH, 그 집을 완전히 때려부쉬고 새롭게 만드는 것은 PUT이라고 생각하면 되겠다.

 

사용 예

다음과 같은 POST 요청으로 새로운 집에 대한 entity를 생성했다고 생각해보자.

POST: http://quietjun.xyz/myhouse

{address:"서울특별시 중랑구",tv:"32인치"}

 

이제 기존의 tv는 64인치로 바꾼다고 생각하보면 아래와 같이 PATCH 할 수 있다. 그럼 결과로 가지게 되는 entity는 다음과 같다. 즉 address는 그대로 두고 tv 속성만 변경하는 개념이다.

PATCH: http://quietjun.xyz/myhouse

{tv:"64인치"}

결과 entity:{address:"서울특별시 중랑구", tv:"64인치"}

 

만약 위와같은 동작을 PUT으로 처리한다면 아래와 같을 것이다.

PUT: http://quietjun.xyz/myhouse

{tv:"64인치"}

결과 entity:{tv:"64인치"}

즉 myhouse에 {tv:"64인치"}를 놓고 오는 개념이기 때문에 원래의 객체는 사라져버리고 결국 address는 없어져버렸다.

물론 개념이기 때문에 서버에서 어떻게 구현하는지에 따라 달라지겠지만 개념이 서로 헷갈린다면 코드에 오류가 올 수 있으니 정확한 이해후 사용하는게 중요하다.

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.