포스트와 다른 의견은 언제나 환영입니다 👍
웹 개발에서 HTTP 메소드는 클라이언트와 서버 간의 통신에서 중요한 역할을 합니다. HTTP 메소드 중 PUT과 PATCH는 모두 리소스를 업데이트하는 데 사용되지만, 그 목적과 동작 방식에서 중요한 차이가 있습니다.
오늘은 PUT과 PATCH의 차이점에 대해 알아보겠습니다. 그럼 시작해보겠습니다! 🚀
기존 자원을 새롭게 생성하거나 완전히 대체하고 싶을 때 사용합니다
PUT /users/1 HTTP/1.1
Content-Type: application/json
{
"name": "Spring Boot",
"email": "spring@boot.com"
}
위 요청은 ID가 1인 사용자의 정보를 전체적으로 갱신합니다. 만약 email 필드가 누락되었다면, 기존 값이 삭제될 수도 있습니다.
PATCH /users/1 HTTP/1.1
Content-Type: application/json
{
"email": "java@object.com"
}
위 요청은 ID가 1인 사용자의 email 필드만 수정하며, 다른 필드는 변경되지 않습니다.
| 특성 | PUT | PATCH |
|---|---|---|
| 용도 | 리소스 전체를 대체 | 리소스의 일부만 수정 |
| 멱등성 | 항상 보장 | 설계 방식에 따라 달라질 수 있음 |
| Payload 요구사항 | 전체 리소스를 포함해야 함 | 수정할 필드만 포함 가능 |
| DTO 필요 여부 | 필요 없음 | 반드시 필요 |
멱등성(Idempotency)은 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 의미합니다.
HTTP의 멱등성은 응답 상태코드가 아닌 서버 상태가 핵심입니다. 동일한 요청을 여러 번 보낸 후 서버 상태가 동일하다면 그 요청은 멱등적이라고 볼 수 있습니다.
PUT /users/1 요청을 여러 번 보내도, ID가 1인 사용자의 상태는 항상 동일하게 유지됩니다.이번 포스트에서는 PUT 과 PATCH 의 차이에 대해서 얘기해보았습니다. 두 HTTP Method 를 사용함에 있어서 정답은 없습니다. 비즈니스 로직과 프로젝트 요구사항에 맞춰 적절하게 설계하면 됩니다!
Reference
Http 아이콘 제작자: Freepik - Flaticon