전에 GET과 POST의 차이점에 대해 정리하면서 POST와 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인 리소스는 없었으므로 최소 한번은 생성되었지만 동일한 응답이 온다.)
위와 같이 실험?을 직접 해봤는데 결과를 정리해보면,
PUT은 멱등하며 POST는 멱등하지 않다.
멱등법칙(冪等法則) 또는 멱등성(冪等性)이란 뜻으로, 수학이나 전산학에서 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. (출처 : 위키백과)