[HTTP Method] POST, PUT 차이

Manx·2022년 4월 28일
0

네트워크

목록 보기
3/5

기존에 POST와 PUT의 차이라고 알고 있던 지식

  • POST : Create
  • PUT : Update

이번에 조금 더 자세하게 알게 되었다.

POST : 클라이언트는 등록될 리소스의 URI를 모른다. (서버가 결정)

PUT : 클라이언트가 직접 리소스의 URI를 지정한다.

예를 들어 이해하는 게 가장 빠르다.
유저 스키마가 다음과 같다고 정의해보자.

  • id: Int (순차적으로 하나씩 증가되며 저장됨)
  • name: String

/members : 유저를 생성하는 URI (POST)

  • 클라이언트는 어떤 유저가 생성될지 모른다. (어떤 아이디를 갖게 될지 모름, 서버가 리소스 URI 결정)
  • 등록될 리소스의 URI를 모름

/members/{id} : 유저의 이름을 수정하는 URI (PUT)

  • 클라이언트가 실제로 어떤 유저인지 알고 있음
  • 클라이언트가 리소스의 URI를 알고 관리

적절한 예시인지 모르겠으나 느낌은 이렇다!

HTTP Method를 통해 모두 해결되면 좋겠지만, 실제 경험도 그렇고 딱 맞아떨어지지 않는 경우가 많다.
그럴 때 나는 /members/delete/{id}와 같이 썼지만, /member/{id}/delete와 같이 리소스 명시를 해치지 않으면서
컨트롤 URI를 써야겠다고 느꼈다.

추가적으로 DB의 수정이 일어나면 무조건 PUT을 사용했는데 좋은 방법이 아니었다.

  • PUT : 기존의 데이터를 모두 덮어 씌움
  • PATCH : 부분적으로 데이터를 수정

앞으로 PATCH도 활용해 보아야겠다.


Reference

profile
백엔드 개발자

0개의 댓글