1 분 소요

HTTP의 GET과 POST 비교

둘 다 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청할 때 사용하는 방식이다. 하지만 둘의 특징을 제대로 이해하여 기술의 목적에 맞게 알맞은 용도에 사용해야한다.

GET

  • 리소스 조회 용도 - 데이터를 요청할때만 사용된다.
  • 서버에 전달하고 싶은 데이터를 query(쿼리 파라미터, 쿼리 스트링)을 통해서 전달한다.
  • 메세지 바디를 사용해서 데이터를 전달할 수 있지만 지원하지 않는 곳이 많아서 권장하지 않음.
  • Get 요청은 캐시가 가능하다 - 브라우저 히스토리에 저장된다

    GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. (HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.)

  • URL 에 데이터가 그대로 노출되기 때문에 보안을 요구하는 서비스에는 사용되지 않는다.

POST

  • 요청받은 데이터를 처리하는 용도 - 전달된 데이터로 신규 리소스 생성, 업데이트 혹은 프로세스 처리를 할때 사용된다.
  • 메시지 바디를 통해 서버로 요청 데이터를 전달한다.
  • post 요청을 받으면 서버는 데이터를 처리하는 일련의 기능을 수행한다.
  • POST 요청은 캐시되지 않는다. - 브라우저 히스토리에 남지 않는다.
  • 데이터가 외부로부터 숨겨져서 보안이 필요한 서비스에 사용된다.

멱등성(Idempotent)

멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 을 의미한다.

GET은 멱등성이 보장된다

GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같다. GET 요청으로 서버에게 동일한 요청을 여러번 전송하더라도 반드시 동일한 응답이 돌아올 것이 보장된다. 따라서, 설계원칙에 따라 서버의 데이터나 상태를 변경시키지 않아야하므로, 주로 조회를 할 때 사용된다.

반대로 POST는 멱등성이 보장되지 않는다

서버에게 동일한 요청을 여러 번 전송해도 응답이 다를 수 있다. 서버 내의 어떤 로직을 변경할때 사용된다.

Reference

https://velog.io/@songyouhyun/Get과-Post의-차이를-아시나요

https://noahlogs.tistory.com/35

댓글남기기