[WEB] POST와 PUT

타키탸키·2023년 3월 8일
0

WEB

목록 보기
3/4

POST

HTTP POST는 요청 데이터를 처리하기 위한 메서드이다. 메시지 바디를 통해 서버로 요청 데이터를 전달하며 데이터를 전달 받은 서버는 해당 데이터를 처리하는 모든 기능을 수행한다. 주로 신규 리소스를 등록하거나 프로세스를 처리할 때 사용된다.

예를 들어, HTML 폼에 입력된 데이터를 데이터 처리 프로세스에 제공하거나 게시판 글 쓰기 혹은 댓글 달기와 같은 게시 기능을 수행한다. 또한, 신규 주문과 같은 서버가 아직 식별하지 않은 새 리소스를 생성하거나 기존에 작성된 문서에 데이터를 이어서 추가하는 등의 역할도 수행한다.

이와 같은 데이터 처리 방법에는 정해진 사항이 없어 리소스마다 따로 정의해야 한다. 때로는 다른 메서드로 처리하기 애매한 경우나 데이터의 상태를 일시적으로 변경 할 때에도 POST 메서드를 사용한다. 예를 들어, 간단한 계산기 프로그램의 경우 데이터베이스 없이도 구현이 가능한데 이때의 연산 결과는 메모리 단위에서 이루어지므로 POST만으로 충분히 처리가 가능하다.

물론 리소스를 영구적으로 변경할 우려가 있는 경우에는 POST를 사용하면 안 된다. POST의 역할은 어디까지나 서버로 요청 데이터를 전달하는 데 있기 때문이다.

PUT과 PATCH

PUT

HTTP PUT은 리소스를 대체하기 위한 메서드이다. 이때, 리소스가 있으면 대체하고 없으면 새로 생성한다. 덮어 쓰기라고 이해하면 쉽다.

중요한 점은 클라이언트가 리소스를 식별한다는 것이다. 클라이언트가 리소스 위치를 알고 url로 지정할 수 있다는 점에서 식별되지 않은 리소스에 대한 요청인 POST와 다르다.

PATCH

HTTP PATCH는 리소스를 부분 변경할 때 사용한다. PATCH 또한, 클라이언트가 리소스를 식별한다.

멱등

멱등이란, 한 번 호출하든 여러 번 호출하든 결과가 똑같은 것을 말한다. GET, PUT, DELETE와 같은 메서드들은 여러 번 요청해도 최종 결과가 같다.

그러나 POST의 경우 멱등성을 가지지 않는다. 두 번 호출 될 경우, 다른 결과가 나올 수 있다. POST는 새로운 데이터를 생성하기도 하지만 기존 데이터를 수정할 때도 사용된다. 같은 요청을 여러 번 보낼 경우, 서버에는 여러 개의 데이터가 생성된다. 예컨대, 결제 요청을 POST로 하게 되면 중복 결제가 발생할 수 있다. 따라서, POST는 데이터의 insert 혹은 append에 사용된다.

이와 달리 PUT은 멱등성을 가지는 메서드이다. 같은 요청을 여러 번 보내도 리소스의 상태가 변하지 않기 때문에 리소스의 상태를 replace하는 용도로 사용된다.

이와 같은 멱등성은 자동 복구 메커니즘 등에 활용될 수 있다. 서버가 timout 등으로 정상 응답을 주지 못하는 경우에 클라이언트가 같은 요청을 다시 해야 하는 상황을 떠올려 보자. 해당 요청을 POST로 하면 여러 개의 새로운 데이터를 생성하게 되고 PUT으로 하면 기존 결과를 대체하기 때문에 최종적으로는 같은 결과를 가질 수 있다.

* 출처: [인프런] 모든 개발자를 위한 HTTP 웹 기본 지식
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글