일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- inversion of control
- 인스턴스
- DI
- API
- 프로세스
- process
- 부트캠프추천
- Thread
- object
- social login
- 소셜로그인
- 항해99솔직후기
- jvm
- Dependency Injection
- 객체
- 스레드
- jwt
- 클래스
- 쓰레드
- Instance
- bean
- 소셜
- 오브젝트
- 객체지향 프로그래밍
- IoC
- 회고록
- class
- 인스턴스화
- 항해99단점
- 항해99장점
- Today
- Total
로운's 기술노트
Rest API의 put과 patch의 차이 본문
■ 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://tecoble.techcourse.co.kr/post/2020-08-17-put-vs-patch/
'항해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 |