[Spring] PATCH vs PUT

PATCH와 PUT의 공통점과 차이점에 대해 알아보자.


둘 다 리소스를 수정할 때 사용하는 HTTP 메서드이지만 차이점이 있다.

✅ 1. 기본 개념

메서드의미리소스를 어떻게 수정?
PUT리소스를 “통째로 교체”전체를 새 값으로 대체
PATCH리소스를 “부분만 수정”바뀐 부분만 업데이트

✅ 2. 예시로 비교해보기

📦 가상의 리소스 – 사용자 프로필

{
  "name": "Sungwoo",
  "age": 27,
  "email": "sungwoo@example.com"
}

🟩 PUT 요청 예시

PUT /users/1
Content-Type: application/json

{
  "name": "Sungwoo",
  "age": 28,
  "email": "sungwoo@example.com"
}
  • 이 요청은 기존 리소스를 통째로 대체함.
  • 기존 값 중 하나라도 빠지면, 그 필드는 삭제된 것으로 간주될 수 있다.

🟦 PATCH 요청 예시

PATCH /users/1
Content-Type: application/json

{
  "age": 28
}
  • 이 요청은 age 필드만 수정하고 나머지(name, email)는 그대로 유지된다.

✅ 3. 핵심 차이 정리

항목PUTPATCH
전체 or 일부전체 대체일부만 수정
누락된 필드삭제될 수 있음무시하고 유지됨
멱등성(Idempotent)있음 (여러 번 해도 같은 결과)보장 X (실행 방식에 따라 달라질 수 있음)
용도새로운 리소스 생성 or 전체 업데이트부분 업데이트에 특화됨

🎨 4. 비유로 이해하기

📘 비유: “이력서 제출하기”

  • PUT은 새로운 이력서 전체를 회사에 제출해서 기존 이력서를 완전히 교체하는 것.

    회사에 제출한 파일을 통째로 새로 바꾸는 느낌!

  • PATCH는 기존 이력서에서 전화번호 한 줄만 수정해서 보낸다고 생각하면 됨.

    “전화번호 바뀌었어요” 라고 알리는 식.


✅ 5. 실무 팁

  • 클라이언트가 전체 데이터를 항상 알고 있고, 전체 리소스를 대체해야 할 경우 → PUT
  • 일부 필드만 수정할 때 → PATCH