Spring Boot

REST API - HTTP Method PUT vs PATCH

sounglikane 2024. 11. 1. 22:16

지금까지 REST API의 “update” 부분을 구현했을 때 “PUT” method를 사용했는데 오늘은 Team project의 API 명세를 만들면서 “PATCH” method의 사용하는 방법을 알게 되었습니다. 그래서 PUT과 PATCH method들을 비교해 봤습니다.

1. PUT method

  • 목적: PUT은 전체 리소스를 교체하는 데 사용됩니다.
  • 사용 방법: PUT 요청을 보낼 때는 리소스의 전체 표현을 포함해야 합니다. 즉, 요청에 포함되지 않은 필드는 기본값이나 null로 덮어씌워질 수 있습니다.
  • 멱등성(Idempotent): PUT은 멱등성을 가지므로, 동일한 데이터를 여러 번 호출해도 한 번 호출한 것과 동일한 결과를 가져옵니다.

예시: 사용자 프로필 업데이트:

PUT /users/123
{
"name": "Jane Doe",
"email": "[jane@example.com](<mailto:jane@example.com>)",
"phone": "123-456-7890"
}

여기서 "phone" 필드를 제외하고 요청을 보내면, 서버의 기록에서 이 필드가 덮어써지거나 제거될 수 있습니다.

2. PATCH method

  • 목적: PATCH는 부분 업데이트에 사용됩니다. 즉, 수정하려는 필드만 전송하면 됩니다.
  • 사용 방법: PATCH 요청에는 수정하고자 하는 특정 필드만 포함되어, 리소스의 다른 필드에는 영향을 주지 않습니다.
  • 멱등성(Idempotent): 멱등성을 가지도록 설계되어 있지만, 이는 구현에 따라 달라질 수 있습니다. 이상적으로는 동일한 PATCH 요청을 여러 번 적용해도 리소스가 동일한 상태로 유지되어야 합니다.

예시: 사용자 프로필의 일부 업데이트:

PATCH /users/123
{
"phone": "123-456-7890"
}

이 요청은 phone 필드만 업데이트하고, 다른 필드는 그대로 유지합니다.

요약

  • PUT: 전체 업데이트, 리소스 전체 교체, 모든 필드가 필요, 멱등성 유지.
  • PATCH: 부분 업데이트, 특정 필드만 수정, 다른 필드는 그대로 유지, 이상적으로는 멱등성 유지.