-
HTTP Method PUT, PATCH 차이카테고리 없음 2023. 5. 30. 00:31
HTTP PUT 메서드
- 요청 페이로드를 사용해 새로운 리소스를 생성
- 대상 리소스를 나타내는 데이터를 대체
HTTP PATCH 메서드
- 리소스의 부분적인 수정을 할 때 사용
PUT, PATCH 차이점
- update 방식의 차이
- 요청한 URI에 자원이 존재하지 않을때 입력
- 멱등성의 관점
해당 테이블이 존재한다고 가정하고 차이점을 알아보자
id score name 1 40 철수 2 60 영희 3 80 경수 update방식의 차이
- id가 1인 사람에게 두가지의 PUT 요청을 보냄
PUT /student?id=1 { "name" : "창수" } PUT /student?id=1 { "name" : "창수", "score" : "100" }
name만 바꾸기 위해 PUT 메서드로 요청을 보내면 전체 데이터를 대체하기 때문에 보내지 않은 값은 null로 대체됨
id score name 1 null 창수 2 60 영희 3 80 경수 전체 데이터를 PUT 메서드로 요청을 보내면 전체 데이터가 대체됨
id score name 1 100 창수 2 60 영희 3 80 경수 - id가 1인 사람에게 두가지의 PATCH요청을 보냄
PATCH /student?id=1 { "name" : "창수" } PATCH /student?id=1 { "name" : "창수", "score" : "100" }
name만 바꾸기 위해 PUT 메서드로 요청을 보내면 보낸 데이터만 바뀌게 되고, 나머지 데이터는 변동이 없음
id score name 1 40 창수 2 60 영희 3 80 경수 전체 데이터를 PUT 메서드로 요청을 보내면 전체 데이터로 변동된다.
id score name 1 100 창수 2 60 영희 3 80 경수 요청한 URI에 자원이 존재하지 않을때 입력
- id가 6인 데이터를 PUT으로 요청을 보냄
PUT /student?id=6 { "name" : "하나", "score" : "0" }
PUT요청은 id가 6인 새로운 자원을 생성해줌
id score name 1 40 철수 2 60 영희 3 80 경수 6 0 하나 - id가 6인 데이터를 PATCH로 요청을 보냄
PATCH /student?id=6 { "name" : "하나", "score" : "0" }
PATCH요청은 새로운 자원을 생성하지 않고 오류를 반환함
id score name 1 40 철수 2 60 영희 3 80 경수 멱등성의 관점
동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 지니고,
서버의 상태도 동일하게 남을 때, 해당 HTTP 메서드가 멱등성을 가졌다고 말함- 기존의 데이터와 같은 PUT요청
PUT /student?id=1 { "name" : "철수", "score" : "40" }
PUT요청으로 동일한 요청을 여러번 보내더라도 항상 같은 데이터로 대체되기 때문에 멱등성을 가짐
id score name 1 40 철수 2 60 영희 3 80 경수 - 데이터가 아닌 동작을 PATCH로 요청
- PATCH는 HTTP 스펙상 구현 방법에 제한이 없음
- 요청 Body에 꼭 수정해야하는 데이터가 있을 필요가 없음 -> 데이터가 아닌 동작 지정 가능
- PATCH는 HTTP 스펙상 구현 방법에 제한이 없음
PATCH /student?id=1 { socre: { type: $inc, value: 1 } }
PATCH 요청으로 Body에 동작을 담음으로써 동일한 요청을 여러번 보내면 값이 계속 바뀌므로 멱등성을 가지지 않음
id score name 1 41 철수 2 60 영희 3 80 경수