[TIL] POST와 PUT의 차이를 알고있는가?

woonie·2022년 6월 7일
0

전에 GET과 POST의 차이점에 대해 정리하면서 POST와 PUT도 함께 정리했었는데
저장이 안되었는지 어디에도 찾아볼 수 없었다..
그래서 다시 정리해보려고 한다.

POST vs PUT

POST는 Create(생성), PUT은 Update(수정)에 매칭되는데,자원에 대한 생성은 POST가 담당하고, 자원에 대한 수정은 PUT이 담당한다.
물론 PUT으로도 생성이 가능하다.

아래의 예시를 함께보면 조금 더 이해가 쉽다.

/student 와 같은 URI가 있고 해당 URI에 대해 POST와 PUT을 작동해보겠다.

POST로 홍길동 이라는 학생을 생성하기 위해 아래와 같이 요청하면 id는 고유값이 설정되어 홍길동이라는 학생이 생성된다.

HttpRequest
POST /student
{
  “name”: “홍길동”,
  “age”: 13
}

HttpResponse
{
  “id”: 1,
  “name”: “홍길동”,
  “age”: 13
}

PUT을 통해 홍길동의 나이를 변경하였다. PUT은 리소스에 대한 수정이므로 해당 id값을 넣어줘야한다.

HttpRequest
PUT /student/1
{
  “age”: 20
}

HttpResponse
{
  “id”: 1,
  “name”: “홍길동”,
  “age”: 20
}

위의 요청들은 POST와 PUT의 가장 기본적인 사용법이다.

조금 더 자세하게 알아보기 위해 다른 방법으로 요청을 해보자.

POST로 홍길동이라는 학생을 두번 생성 요청을 했다.

{
  “id”: 1,
  “name”: “홍길동”,
  “age”: 20
}
{
  “id”: 2,
  “name”: “홍길동”,
  “age”: 20
}

id가 각각 1,2인 홍길동이 생성되었다. POST는 리소스를 생성하기 위한 메서드로 요청한 횟수 만큼 새로운 리소스를 생성한다.

다음으로 PUT도 두번 요청을 해봤다.

{
  “id”: 3,
  “name”: “홍길동”,
  “age”: 22
}

두번을 요청했지만 위와 같이 동일하게 응답이 왔다.
(id가 3인 리소스는 없었으므로 최소 한번은 생성되었지만 동일한 응답이 온다.)

위와 같이 실험?을 직접 해봤는데 결과를 정리해보면,

  • POST
    • 리소스의 생성을 담당
    • POST는 요청 시 새로운 리소스가 생성된다.
  • PUT
    • 리소스의 생성과 수정을 담당
    • PUT은 요청 시 같은 리소스를 반환한다.

PUT은 멱등하며 POST는 멱등하지 않다.

멱등법칙(冪等法則) 또는 멱등성(冪等性)이란 뜻으로, 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. (출처 : 위키백과)

profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글