-
Notifications
You must be signed in to change notification settings - Fork 1
POST, PUT, PATCH 차이
앞으로 서버에서 API를 만들어야 하니 HTTP 매서드에 대해 잘 알고 사용해야 할 것 같아서 간단히 찾아봤다.
URL 설계 규칙도 찾아볼 계획.
REST API 에서 POST 요청은 Request URI 에 정의된 리소스에 Entity 를 새롭게 생성하는 요청을 서버에 보낼 때 사용하는 HTTP Method 다.
예를 들어, 게시물들을 저장하는 Boards 가 있다고 했을 때, 게시물을 새로 생성하는 요청은
/boards
URI 로POST
요청을 보내는 것으로 설정할 수 있다.
PUT 의 정의는 “Request-URI에 있는 Resource가 존재한다면, Request에 있는 Entity에 값으로 리소스를 **Update(갱신)**한다.” 이다.
만약 Resource 가 존재하지 않고, Request URI 가 올바르다면 리소스를 생성한다.
이해하기 쉬운 예시를 들면,
POST
/boards
→ Body 에 있는 정보로 새로운 Entity 생성
PUT
/boards/{존재하는 게시물 ID}
→ 존재하는 게시물의 정보를 덮어쓰기해서 정보를 Update
PUT
/boards/{존재하지 않는 게시물 ID}
→ 해당 ID로 새로운 Entity 생성
으로 생각할 수 있다.
PUT 이 단순히 update 만 하는 것이 아니라 생성도 한다면 그럼 POST와 무슨 차이가 있는 것일까?
가장 큰 차이는 멱등성이다.
멱등성이란 여러번 수행해도 결과가 같음을 의미한다.
위의 예시에서 /boards
로 POST
요청을 반복적으로 보낸다면 그 수만큼 새로운 게시물이 생성될 것이다.
하지만 같은 ID로 /boards/{id}
로 PUT
요청을 반복적으로 보낸다면 하나의 게시물이 생성 / 수정 되어 결과는 항상 같을 것이다.
또한 PUT
은 URI 에 게시물의 ID 같은 Resource Identifier 가 포함되어야 한다.
PUT
은 요청 페이로드를 사용해서 Resource 를 생성하거나 대체하지만, PATCH
는 부분적인 수정을 한다.
즉, PUT
에서는 body 에 생성하거나 대체할 Resource 의 정보가 모두 있어야 하고, PATCH
에서는 부분적인 수정을 할 데이터만 있으면 된다.
PATCH 는 멱등하게 설계할 수도 있고 아닐 수도 있다. 이건 정하기 나름이다. By 김영한
- 프로젝트 생성
- 프로젝트 구조
- PR에 대한 단위 테스트 자동화
- 역/직렬화 라이브러리 비교
- Github Release 자동화
- Firebase App 배포 자동화
- 플러그인을 이용하여 공통 설정 없애기
- Timber 라이브러리를 사용한 이유
- 네트워크 예외 처리
- Kotest 도입기