[Spring] PATCH vs PUT
in SPRING
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. 핵심 차이 정리
항목 | PUT | PATCH |
---|---|---|
전체 or 일부 | 전체 대체 | 일부만 수정 |
누락된 필드 | 삭제될 수 있음 | 무시하고 유지됨 |
멱등성(Idempotent) | 있음 (여러 번 해도 같은 결과) | 보장 X (실행 방식에 따라 달라질 수 있음) |
용도 | 새로운 리소스 생성 or 전체 업데이트 | 부분 업데이트에 특화됨 |
🎨 4. 비유로 이해하기
📘 비유: “이력서 제출하기”
PUT은 새로운 이력서 전체를 회사에 제출해서 기존 이력서를 완전히 교체하는 것.
회사에 제출한 파일을 통째로 새로 바꾸는 느낌!
PATCH는 기존 이력서에서 전화번호 한 줄만 수정해서 보낸다고 생각하면 됨.
“전화번호 바뀌었어요” 라고 알리는 식.
✅ 5. 실무 팁
- 클라이언트가 전체 데이터를 항상 알고 있고, 전체 리소스를 대체해야 할 경우 →
PUT
- 일부 필드만 수정할 때 →
PATCH