[HTTP] PUT vs PATCH 차이점에 대하여

gomzu·2025년 1월 7일
post-thumbnail

포스트와 다른 의견은 언제나 환영입니다 👍

Overview

웹 개발에서 HTTP 메소드는 클라이언트와 서버 간의 통신에서 중요한 역할을 합니다. HTTP 메소드 중 PUTPATCH는 모두 리소스를 업데이트하는 데 사용되지만, 그 목적과 동작 방식에서 중요한 차이가 있습니다.

오늘은 PUT과 PATCH의 차이점에 대해 알아보겠습니다. 그럼 시작해보겠습니다! 🚀



PUT과 PATCH란?

PUT

  • 기존 자원을 대체하는 HTTP 메서드입니다.
  • 기존 자원이 없으면 새로운 자원을 생성합니다.
  • 주요 특징
    • 클라이언트는 자원의 전체 상태를 알고 있어야 합니다.
    • PUT 요청은 항상 완전한 Payload를 전달해야 합니다. (리소스 전체를 대체하기 때문)
    • PUT 메서드는 멱등성을 보장합니다.
    • PUT은 데이터 전체를 받기 때문에 DTO 없이 Entity 객체만으로 처리할 수도 있습니다

사용 상황

기존 자원을 새롭게 생성하거나 완전히 대체하고 싶을 때 사용합니다

예시

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

{
    "name": "Spring Boot",
    "email": "spring@boot.com"
}

위 요청은 ID가 1인 사용자의 정보를 전체적으로 갱신합니다. 만약 email 필드가 누락되었다면, 기존 값이 삭제될 수도 있습니다.


PATCH

  • 기존 자원의 일부만 수정하는 HTTP 메서드입니다.
  • 주요 특징
    • 부분 업데이트를 수행하며, 클라이언트는 수정하고자 하는 필드만 전달하면 됩니다.
    • PATCH 메서드는 DTO를 반드시 사용해야 합니다. (일부 필드만 수정하기 때문에 Entity와의 매핑이 필요)
    • PATCH 메서드는 일반적으로 멱등성을 보장하지만, 구현 방식에 따라 다를 수 있습니다.

사용 상황

  • 기존 자원의 데이터 일부만 수정하고 싶을 때.

예시

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

{
    "email": "java@object.com"
}

위 요청은 ID가 1인 사용자의 email 필드만 수정하며, 다른 필드는 변경되지 않습니다.



PUT과 PATCH의 차이점 정리

특성PUTPATCH
용도리소스 전체를 대체리소스의 일부만 수정
멱등성항상 보장설계 방식에 따라 달라질 수 있음
Payload 요구사항전체 리소스를 포함해야 함수정할 필드만 포함 가능
DTO 필요 여부필요 없음반드시 필요



멱등성이란?

멱등성(Idempotency)은 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 의미합니다.

HTTP의 멱등성은 응답 상태코드가 아닌 서버 상태가 핵심입니다. 동일한 요청을 여러 번 보낸 후 서버 상태가 동일하다면 그 요청은 멱등적이라고 볼 수 있습니다.

PUT과 PATCH의 멱등성

  • PUT: 항상 멱등성을 보장합니다.
  • PATCH: 멱등적으로 설계할 수 있지만, 항상 그렇지는 않습니다.예를 들어, 요청마다 특정 값을 증가시키는 API가 있다면, PATCH 요청은 서버 상태를 변경하며 멱등성을 보장하지 않습니다.

예시

  • PUT:
    • 동일한 PUT /users/1 요청을 여러 번 보내도, ID가 1인 사용자의 상태는 항상 동일하게 유지됩니다.
  • PATCH:
    • 요청마다 데이터를 +10씩 증가시키는 API가 있다면, PATCH 요청은 서버 상태를 매번 변경하며 멱등성을 만족하지 못합니다.



결론

이번 포스트에서는 PUT 과 PATCH 의 차이에 대해서 얘기해보았습니다. 두 HTTP Method 를 사용함에 있어서 정답은 없습니다. 비즈니스 로직과 프로젝트 요구사항에 맞춰 적절하게 설계하면 됩니다!

  • PUT: 전체 데이터를 대체하거나 새로운 리소스를 생성해야 할 때 사용합니다.
  • PATCH: 기존 리소스의 일부만 수정하고 싶을 때 사용합니다.
  • 두 메서드 모두 정답은 없습니다.

Reference
Http 아이콘 제작자: Freepik - Flaticon

profile
Log Of The Day

0개의 댓글