[Spring] PUT과 PATCH의 차이점

Minhyeok·2024년 6월 10일
post-thumbnail

HTTP프로토콜에서는 리소스를 업데이트하기위해 'PUT'과 'PATCH' 메서드를 사용한다.

이 두가지 메서드는 리소스를 업데이트하는데 사용된다는 공통점이 있지만 그 목적과

동작 방식에서 중요한 차이점이 있다.


PUT Method

  • 전체 업데이트 (Full Update)
    'PUT' 메서드는 리소스의 전체를 업데이트합니다. 요청 시 제공된 데이터가 기존 리소스의 모든 데이터를 대체한다.
    예를 들어, 클라이언트가 사용자 정보를 업데이트할때 'PUT' 요청을 보내면, 제공된 사용자 정보로 기존 정보가 완전히 대체된다..

  • 멱등성(Idempotency)
    'PUT' 메서드는 멱등성을 가집니다. 즉, 동일한 'PUT' 요청을 여러번 보내더라도 결과는 항상 동일하다.
    이로인해 네트워크 오류 등으로 인해 동일한 요청이 여러 번 전송되더라도 일관성을 유지할 수 있다.


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

{
    "name": "John Doe",
    "email": "john.doe@example.com"
}

위 코드를 보면 ID가 123인 사용자의 정보를 새로운 데이터로 완전히 대체합니다.


PATCH Method

  • 부분 업데이트(Partial Update)
    'PATCH'메서드는 리소스의 일부만 업데이트합니다. 요청시 제공된 데이터만 변경되며, 나머지 데이터는 그대로 유지됩니다.
    예를 들어, 클라이언트가 사용자 이메일을 업데이트할 때 'PATCH' 요청을 보내면, 제공된 이메일 정보만 변경되고 나머지 사용자 정보는 변경되지 않습니다.

  • 멱등성(Idempotency)
    'PATCH' 메서드도 멱등성을 가질 수 있지만, 구현에 따라 다를 수 있다.
    동일한 'PATCH' 요청을 여러 번 보내도 결과가 동일해야 하는것이 일반적이다.


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

{
    "email": "john.doe.new@example.com"
}

위 코드를 보면 ID가 123인 사용자의 이메일 정보만 업데이트한다.


결론

  • 'PUT' : 리소스를 완전히 대체하는 전체 업데이트, 멱등성을 보장합니다.
  • 'PATCH' : 리소스의 일부만 업데이트하는 부분 업데이트, 멱등성을 보장할 수 있지만, 구현에 따라 다를 수 있습니다.
profile
민혁스

0개의 댓글