PUT과 PATCH 차이

HTTP Method PUT, PATCH

게시글을 수정하는 API를 제작하다가 PUT과 PATCH 둘 중 어떤 HTTP Method가 더 적합한지 찾아보았다.

PUT, PATCH에 대해 MDN 공식문서를 보았다.

put

patch

  • PUT은 페이로드를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체합니다.
  • PATCH는 리소스의 부분적인 수정을 할 때 사용된다.

사실 글로만 봐서는 와닿지는 않는데 예시를 통해 알아보자.

PUT

PUT의 경우에는 아래와 같이 책 정보가 있다고 할 때

책(book) 1
제목 객체지향의 사실과 오해
부제 역할, 책임, 협력 관점에서 본 객체지향
글쓴이 조영호

해당 PUT 요청을 보내면

PUT /book/1

{
    title: "Test-Driven Development",
    description: "테스트 주도 개발",
    writer: "켄트 백"
}

아래와 같이 리소스가 변경된다.

책(book) 1
제목 Test-Driven Development
부제 테스트 주도 개발
글쓴이 켄트 백

그럼 부제와 글쓴이를 제외하고 제목만 보낼 시에는

PUT /book/1

{
    title: "일은 배신하지 않는다"
}
책(book) 1
제목 일은 배신하지 않는다
부제 null
글쓴이 null

제목을 제외한 부제와 글쓴이는 null로 리소스가 생성된다.

PATCH

PATCH의 경우에는 아래와 같이 책 정보가 있다고 할 때

책(book) 1
제목 객체지향의 사실과 오해
부제 역할, 책임, 협력 관점에서 본 객체지향
글쓴이 조영호

해당 PATCH 요청을 보내면

PATCH /board/1

{
    title: "The Essence of Object-Orientation"
}
책(book) 1
제목 The Essence of Object-Orientation
부제 역할, 책임, 협력 관점에서 본 객체지향
글쓴이 조영호

페이로드에 있는 제목만 수정된다는 차이점이 있다.


  • 요약
    • PUT은 리소스 전체를 새롭게 생성 또는 수정
    • PATCH는 요청한 리소스 부분 수정
PUT과 PATCH 차이
Older post

직렬화와 역직렬화

Newer post

fetch 에러처리

PUT과 PATCH 차이