HTTP의 메서드는총 9가지 인데 그 중 GET
과 POST
는 가장 많이 사용하는 메서드 이다.
HTTP Method
GET, POST, PUT, PATCH, DELETE가 있고
나머지는 HEAD, CONNECT, OPTIONS, TRACE가 있음
HTTP 메서드에 대해 알기 위해서는 먼저 REST API에 대해서 알아야 하는데 간단하게 설명하자면 아래와 같다.
REST원칙을 적용하여 서비스 API를 설계한 것으로 웹 서비스에서 클라이언트와 서버 간의 통신을 단순하게 만드는 방법이다.
예를 들어, 웹 사이트에서 새로운 게시물을 가져오거나 사용자 정보를 업데이트하는 등의 작업을 할 때 REST API
를 사용한다.
요청을 보낼 때는 작업의 종류의 따라 HTTP 메서드(GET, POST, PUT, DELETE)를 사용하고, 요청 엔드포인트로 전송한다.
서버는 이러한 요청을 받아서 적절한 작업을 수행하고 그 결과를 클라이언트에게 다시 보내준다.
이러한 방식을 통해 클라이언트와 서버 간의 통신(요청과 응답)을 간단하고 효율적으로 관리할 수 있는 것을 지칭한다.
GET
GET은 클라이언트가 서버에 리소스를 요청하는 메소드이며 주로 조회할 때 사용한다.
CRUD중에 GET은 Read
GET은 SELECT 성향이 있어 서버에서 어떠한 데이터를 가져와서 보여주는 용도로 활용
Idempotent(멱등성) : 동일한 GET 요청을 여러 번 보내도 서버의 상태나 데이터에 영향을 주지 않고, 동일한 응답을 반환함
URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 대한 Body가 없음
요청을 전송할 때 URL 주소 끝에 파라미터로 포함되어 전송되어 데이터가 URL의 쿼리 스트링
을 통해 전송됨
데이터가 URL에 노출되기 때문에 보안상 GET방식은 중요한 정보를 다루기에 적합하지 않음
캐싱이 가능함
→ GET을 통해 서버에 리소스(데이터)를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스 복사본을 반환함
HTTP Header에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있음
브라우저 기록이 생성되고 북마크로 추가가 가능함
POST
POST는 요청한 리소스를 생성하기 위해 사용하는 메소드이여 주로 등록할 때 사용한다.
CRUD중에 POST는 Create
Non-idempotent : 동일한 POST 요청을 여러 번 보내면 각기 다른 결과를 가져올 수 있음
서버의 상태나 데이터를 변경할 때 사용함(ex. 게시글 작성, 수정, 삭제 등)
요청하는 데이터가 HTTP메시지의 body
부분에 포함되어 전송됨
데이터가 URL에 노출되지 않아 GET보다 보안성이 높음
캐싱이 불가능함
브라우저 기록이 생성되지 않으며 북마크 추가도 불가능함
GET, POST 차이점
: 연산의 한 성질을 나타내는 것으로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다. (위키백과)
HTTP 메서드에 멱등성을 적용했을 때 가지는 의미로는 동일한 요청을 1번 보내는 것과 여러 번 연속으로 보내는 것이 같은 효과를 가지고, 서버의 상태도 동일하게 남을 때 해당 HTTP Method가 멱등성을 가진다고 할 수 있다.
📍 정리하자면 서버의 상태가 멱등성이 보장되는 경우 같은 행위를 여러 번 반복하더라도 같은 효과를 가져야 한다는 것!
멱등성이 보장되지 않으면, 같은 행위를 여러 번 반복하는 경우 요청마다 다른 효과가 발생된다.
즉, 응답이 다를 수는 있지만, 요청이 의도한 효과를 발휘할 때 멱등성이 유지됨을 의미한다.
참고
블로그