개발 팁

HTTP에서 PUT과 PATCH의 차이

Razelo 2022. 7. 15. 16:56

HTTP요청에서 PUT과 PATCH라는게 존재하는 것을 알고 있었는데 여태 둘이 같은 기능을 한다고 오해하고 있었다. 

 

그러다가 Django를 학습하던 중 이 두가지를 구분해서 사용하는 예제를 보았고 분명 차이가 있다고 생각해서 오늘 찾아보았다.

(생각보다 중요한 차이였다. 계속 모르고 있었다면 위험했다.)

 

우선 둘다 update를 한다는 점에서는 같다. 

 

특정 객체를 디비에 밀어넣을때 내가 전달한 값으로 업데이트를 해서 넣는다는 점에서는 같다. 

 

하지만 이 동작에서의 미묘한 차이가 있다. 

 

PUT의 경우에는 업데이트를 할때 모든 값을 업데이트한다. 즉 모든 필드에 대해서 업데이트를 진행한다는 얘기다. 

 

PATCH는 내가 전달한 값에 대해서만 업데이트한다. 전달한 필드에 대해서만 업데이트를 진행한다. 

 

즉 만약 PUT으로 일부 필드에 대해서만 업데이트를 하려고 시도하면 나머지 필드들은 내가 전달(명시)해주지 않았기 때문에 갑자기 전부 NULL로 세팅되버리는 경우가 생길 수 있다는거다. 

 

그렇기 때문에 PATCH를 사용할 수 있는 방향으로 설계하는 것이 좋다고 한다. 역시나 생각해보면 한번의 요청에 테이블 전체의 필드를 모두 업데이트하는 과정은 성능상으로나 개념상으로 옳치 않다고 생각된다. 

 

아래 읽어보면 좋은 블로그가 있다. 굳이 외우지는 말고 가물가물할때 한번씩 다시 읽어보면 좋다. 

 

https://programmer93.tistory.com/60

 

HTTP 구조 정리 - 삽질중인 개발자

- HTTP 구조 정리 - 개발을 하게 된다면 외부 API를 사용해야하는 경우가 많이있다. Rest API는 HTTP 구조로 되어 있어 HTTP 구조에 대해서 모르면 삽질을 많이 할 수 도 있어서 정리한다. 1. HTTP란 HyperText

programmer93.tistory.com

 

반응형

'개발 팁' 카테고리의 다른 글

[SW] SOLID 원칙이란 무엇인가?  (0) 2022.09.18
10월 4일 페이스북 대규모 장애 원인 간단 정리  (0) 2022.07.29
REST API 가장 간단한 설명  (0) 2022.05.05
[CS] Gbps 와 GBps 의 차이  (0) 2022.04.21
커리어 팁  (0) 2022.02.12