RFC 5789

송용진·2025년 7월 9일

Python / Django

목록 보기
11/23

HTTP PATCH Method for Partial Resource

RFC 5789는
HTTP 프로토콜에서 PATCH 메서드의 의미와 사용 방법을
공식적으로 정의한 문서

RESTful API를 설계할 때
PATCH를 사용하는 것이 왜 정당한지,
어떤 규칙을 따라야 하는지를 알려주는 표준 문서

기존의 PUT 메서드는 전체 리소스를 교체하는 방식이지만,
어떤 경우에는 일부만 수정하고 싶을 수 있음
이런 목적을 위해 등장한 것이 바로 PATCH 메서드이고,
RFC 5789는 이 PATCH 메서드를 표준으로 정의한 문서

PATCH의 정의

The PATCH method requests
that a set of changes
described in the request be applied
to the resource
identified by the Request-URI.

•	요청 URI로 지정된 리소스에 대해, 
주어진 변경사항만 적용하겠다는 뜻
•	전체 교체가 아님 
→ 부분 수정(partial update) 이라는 점이 핵심

PATCH와 PUT의 차이점

응답 코드에 대한 설명 (RFC 문서에 명시됨)

•	204 No Content: 수정 성공, 응답 본문 없음
•	200 OK: 수정 성공, 응답 본문 있음
•	403 Forbidden: 권한 없음
•	404 Not Found: 리소스 없음 (보통은 PATCH는 리소스가 존재할 때만 사용됨)

리소스가 존재하지 않을 때는?

RFC 5789는 PATCH를 기존 리소스에만 적용해야 한다고 말함

If the target resource does not exist,
the origin server MAY create a new resource,
depending on the application logic.
However, this is not standard.

•	기본적으로는 404를 반환하는 게 맞지만
•	애플리케이션이 필요하다면 업서트(upsert) 처럼 생성도 허용 가능

실제 REST API에서의 사용 예시

요청:

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

{
"nickname": "goldangeee"
}

응답:

HTTP/1.1 200 OK
{
"id": 123,
"nickname": "goldangeee",
"email": "yongjin@example.com"
}

왜 중요하고, 언제 쓰는가?

표준 정의

HTTP에서 부분 수정이 필요할 때 사용하는 공식 메서드

실전에서의 의미

리소스 일부 필드만 바꿀 때 PATCH를 사용하는 것이 REST스럽고 효율적

리소스 미존재 시

엄밀히는 404, 그러나 필요 시 생성도 허용 가능 (비표준)

RFC 5789 공식 문서

https://datatracker.ietf.org/doc/html/rfc5789

profile
개발자

0개의 댓글