서론
HTTP 프로토콜 메소드 중 수정을 위한 PUT과 PATCH가 존재한다.
수정이라는 동일한 기능을 제공하지만 2가지를 자세히 알아보면 차이를 알 수 있다.
PUT과 PATCH에 대한 차이를 알아보자.
1. PUT
- DB 내 자원(데이터)를 변경할 때에 사용하는 방식이다.
- CRUD의 UPDATE를 처리한다.
- PUT은 자원을 모두 변경하는 메소드이다.
- 변경을 위한 데이터가 DB에 존재하지 않으면 새로운 자원으로써 저장한다.
- 변경을 위한 데이터가 DB에 존재하면 기존에 존재하던 자원 전체를 변경한다.
- 만약 PUT을 사용해 일부만 변경하고자 하여 변경 요청 데이터를 완전하지 못한 상태로 전송한다면 비어있는 값들은 null값으로 변경된다.
2. PATCH
- DB 내 자원(데이터)를 변경할 때에 사용하는 방식으로 수정을 한다는 기능 자체는 PUT과 비슷하다.
- PATCH는 자원에 대한 부분적인 수정이 가능한 메소드이다.
3. PUT과 PATCH의 차이
PUT은 DB 컬럼 중 일부만을 변경하는 것을 지원하지 않지만 PATCH는 DB의 일부를 변경할 수 있다는 차이점이 존재한다.
또한, PUT은 멱등성을 보장하지만 PATCH는 멱등성을 반드시 보장하는 것은 아니다.
여기서 멱등성이란, 어떤 대상에 같은 연산을 여러번 적용해도 결과가 달라지지 않는 성질을 의미한다.
f(f(x)) = f(x)
멱등성