Skip to content

POST, PUT, PATCH 차이

SeoKyung Lim edited this page Dec 14, 2023 · 1 revision

앞으로 서버에서 API를 만들어야 하니 HTTP 매서드에 대해 잘 알고 사용해야 할 것 같아서 간단히 찾아봤다.

URL 설계 규칙도 찾아볼 계획.

RESTful API POST

REST API 에서 POST 요청은 Request URI 에 정의된 리소스에 Entity 를 새롭게 생성하는 요청을 서버에 보낼 때 사용하는 HTTP Method 다.

예를 들어, 게시물들을 저장하는 Boards 가 있다고 했을 때, 게시물을 새로 생성하는 요청은 /boards URI 로 POST 요청을 보내는 것으로 설정할 수 있다.

PUT

PUT 의 정의는 “Request-URI에 있는 Resource가 존재한다면, Request에 있는 Entity에 값으로 리소스를 **Update(갱신)**한다.” 이다.

만약 Resource 가 존재하지 않고, Request URI 가 올바르다면 리소스를 생성한다.

이해하기 쉬운 예시를 들면,

POST /boards → Body 에 있는 정보로 새로운 Entity 생성 PUT /boards/{존재하는 게시물 ID} → 존재하는 게시물의 정보를 덮어쓰기해서 정보를 Update PUT /boards/{존재하지 않는 게시물 ID} → 해당 ID로 새로운 Entity 생성

으로 생각할 수 있다.

POST 와 PUT 의 차이

PUT 이 단순히 update 만 하는 것이 아니라 생성도 한다면 그럼 POST와 무슨 차이가 있는 것일까?

가장 큰 차이는 멱등성이다.

멱등성이란 여러번 수행해도 결과가 같음을 의미한다.

위의 예시에서 /boardsPOST 요청을 반복적으로 보낸다면 그 수만큼 새로운 게시물이 생성될 것이다.

하지만 같은 ID로 /boards/{id}PUT 요청을 반복적으로 보낸다면 하나의 게시물이 생성 / 수정 되어 결과는 항상 같을 것이다.

또한 PUT은 URI 에 게시물의 ID 같은 Resource Identifier 가 포함되어야 한다.

PATCH 와 PUT 의 차이

PUT 은 요청 페이로드를 사용해서 Resource 를 생성하거나 대체하지만, PATCH부분적인 수정을 한다.

즉, PUT 에서는 body 에 생성하거나 대체할 Resource 의 정보가 모두 있어야 하고, PATCH 에서는 부분적인 수정을 할 데이터만 있으면 된다.

그럼 PATCH 는 멱등한가?

PATCH 는 멱등하게 설계할 수도 있고 아닐 수도 있다. 이건 정하기 나름이다. By 김영한

Clone this wiki locally