PATCH

HTTP PATCH

안전 (Safe)아니오
멱등 (Idempotent)아니오
캐시 가능아니오
요청 본문
응답 본문

개요

PATCH는 리소스의 일부만 부분 수정합니다. 보낸 필드만 바뀌고 나머지는 그대로 유지되므로, 전체를 교체하는 PUT과 대비됩니다.

자세히

PATCH의 본문은 '변경 지시'입니다. 형식은 두 가지가 흔합니다 — 바꿀 필드만 담는 JSON Merge Patch(`application/merge-patch+json`)와, 연산 목록으로 기술하는 JSON Patch(`application/json-patch+json`).

PATCH는 스펙상 멱등이 보장되지 않습니다. 예를 들어 '수량 +1' 같은 상대 연산은 두 번 보내면 결과가 달라집니다. 절대값 지정(merge patch)으로 설계하면 사실상 멱등하게 만들 수 있고, `If-Match`로 충돌도 막을 수 있습니다.

요청 / 응답 예시

요청
PATCH /api/users/42 HTTP/1.1
Host: api.example.com
Content-Type: application/merge-patch+json

{ "name": "Ada L." }
응답
HTTP/1.1 200 OK
Content-Type: application/json

{ "id": 42, "name": "Ada L.", "email": "ada@example.com" }

코드로 보기

curl -X PATCH https://api.example.com/api/users/42 \
  -H 'Content-Type: application/merge-patch+json' \
  -d '{"name":"Ada L."}'
await fetch('/api/users/42', {
  method: 'PATCH',
  headers: { 'Content-Type': 'application/merge-patch+json' },
  body: JSON.stringify({ name: 'Ada L.' })
});

흔한 실수

주로 함께 쓰는 상태코드

관련 메서드

관련 헤더