[REST API] HTTP Method PUT vs PATCH

최더디·2020년 9월 7일
1

궁금하게 된 이유


restful API 를 공부하던 와중 update 부분을 만들 때 , PUT 을 사용해야 한다는 걸 알게 되었다.

하지만 구글링을 통해 또 알게 된 내용은 update 를 PATCH 를 통해서 하는 방법도 있다는 걸 알게 되었다.

이 두개의 차이점이 뭔지 궁금하게 되었다.

PUT vs PATCH


restful API 를 사용할 때 UPDATE 하는 부분에서 PUT or PATCH 를 사용한다.

두 개의 차이점

  • PUT : 자원 전체 교체 (자원의 모든 필드 필요)
  • PATCH : 자원의 부분 교체 (자원의 일부 필드 필요)

예시


예를 들어보자 아래와 같이 데이터가 있다고 해보자.

GET /users/1
{ 
	"name" : "insutance",
	"email" : "test@naver.com" 
}

Update 할 때 PUT 을 사용하기 위해서는 자원 내의 모든 필드가 필요하다고 했다.
하지만! 자원 내의 필드 중 하나라도 빠지면 null 값이 들어가게 된다.

# Good!
PUT /users/1
{
	"name" : "choi",
	"email" : "success@naver.com"
}

# result
GET /users/1
{
	"name" : "choi",
	"email" : "success@naver.com"
}
# Bad...
PUT /users/1
{
	"name" : "choi",
}

# result
GET /users/1
{
	"name" : "choi",
	"email" : null
}

여기서 PUTPATCH 의 차이점이 나온다.
Update 할 때 PATCH 을 사용하기 위해서는 자원 내의 일부 필드만 있어도 된다고 했다.
따라서 결과는 아래와 같이 나오게 된다.

# Good!
PATCH /users/1
{
	"name" : "choi",
}

# result
GET /users/1
{
	"name" : "choi",
	"email" : "test@naver.com"
}

하지만 PATCH는 우리가 사용하는 대부분의 웹서버 및 브라우저에서 지원하지 않는다고 한다..
정확하지는 않지만 IE8, PHP, Tomcat, Django 등등 많은 곳에서 지원하지 않기 때문에 유의해야 한다고 한다..
그래서 나는 그냥 PUT 을 사용하려고 한다.

profile
focus on why

0개의 댓글