로운's 기술노트

Rest API의 put과 patch의 차이 본문

항해99_'22.01~04/개념

Rest API의 put과 patch의 차이

로운's 2022. 1. 25. 02:01

■ Rest의 정의

  put과 patch의 차이를 정확하게 알아보기 앞서 Rest의 의미를 알아보자.

Rest는 “Representational State Transfer”의 약자로 자원(resource)의 표현(representation) 에 의한 상태 전달이라고 볼 수 있다. 즉, HTTP 통신에서 특정 자원에 대한 요청을 Resource와 Method로 표현하여 특정한 형태로 응답하는 것을 의미한다. 여기에서 표현되는 Method에 우리가 궁금해하는 'put'과 'patch'가 있다.

 

■ put과 patch의 차이

구분 기능 개념 *멱등성
POST Create 데이터 등록 X
GET Read 데이터 조회 O
PUT Update 데이터를 대체
(또는 새로운 데이터를 생성)
O
PATCH Update 데이터 일부를 변경 X
DELETE Delete 데이터 삭제 O

* '멱등성'이란, 동일한 요청을 한 번 보내는 것과 연속으로 보내는 것이 같은 효과를 지니고 서버의 상태도 동일하게 남을 때, 해당 HTTP메서드가 '멱등성'을 가졌다고 말합니다.

 

put과 patch가 속한 HTTP 프로토콜은 위와 같은 Method를 제공한다(CRUD).

단순 표기상의 '수정(Update)' 기능은 유사하지만, 둘은 엄연히 다른 사용성을 보인다.

결과적으로 자원의 일부를 수정할 때는 PATCH를, 전체적인 수정이 필요할 때는 PUT을 이용하는 것이 적절하다.

 

아래의 예시로 어떤 차이가 있는지 자세히 알아보자. 

id balance name
1 100 민석
2 20 민찬
3 -120 민종

 

1. Update 방식의 차이

  같은 리소스에서 id값이 1인 사람에게 각각 2종류의 요청을 보낸다고 가정해보자.

 

  1) PUT : 보내지 않은 값은 "null"로 대체된다. 

             즉, PUT의 정의처럼 대상 리소스를 나타내는 데이터를 대체한다.

 

  2) PATCH : 보내지 않은 값은 그대로 유지되고 있다.

 

 

2. 요청한 URI 아래에 자원이 존재하지 않는 경우

  예시에서 새로운 id값을 요청해보자

 

  1) PUT : 새로운 자원을 생성한다.

 

  2) PATCH : 새로운 자원을 생성하지 않는다.

 

 

3. 멱등성 관점

  위에서 언급한 것처럼 PUT은 멱등성을 가지만, PATCH는 멱등성을 가지지 않는다.

그렇다면 PATCH를 통해 아래의 요청을 2번 보내서 멱등성을 가지지 못하는 예시를 살펴보자.

 

  ㄴ PATCH를 1번 요청했을 경우                                ㄴ PATCH를 2번 요청했을 경우

 

 

 

 

- 출처

https://dev-coco.tistory.com/97

https://velog.io/@vagabondms/%EA%B8%B0%EC%88%A0-%EC%8A%A4%ED%84%B0%EB%94%94-PUT%EA%B3%BC-PATCH-%EC%B0%A8%EC%9D%B4

https://tecoble.techcourse.co.kr/post/2020-08-17-put-vs-patch/

https://devuna.tistory.com/77

'항해99_'22.01~04 > 개념' 카테고리의 다른 글

Process, Thread가 뭘까?  (0) 2022.04.26
클래스, 객체, 인스턴스를 알아보자  (0) 2022.04.26
TDD vs BDD vs DDD vs ATDD  (0) 2022.02.09
Servlet과 JSP 차이  (0) 2022.02.01
JPA란?  (0) 2022.01.22
Comments