본문 바로가기
Backend/Spring Boot

[Spring] GET & POST 차이점, 어떨 때 사용?

by 성장하고픈개발자 2023. 6. 23.
728x90
728x90

GET POST는 HTTP 프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식이다!

큰 차이점 → 데이터가 어디에 위치하는가?

 

GET 방식

GET은 요청을 전송할 때 필요한 데이터를 Body에 담지 않고, 쿼리스트링을 통해 전송한다.

쿼리스트링이란? : URL 의 끝에 ? 와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 말한다.

  • GET 요청은 캐시가 남아있어 전송 속도가 빠르다.
  • GET 요청은 실패 시 될 때까지 반복한다.
  • GET은 검색 결과 등 고정적인 주소 및 링크 주소로 사용될 수 있다.
  • GET은 정보를 담을 URL길이(최대 2048자)가 한계가 있다.
  • GET은 ASCII캐릭터만 허용한다.
  • GET 요청은 브라우저 히스토리에 남는다.

 

POST 방식

POST는 리소스를 생성/변경하기 위해 설계되었기 때문에 GET과 달리 전송해야될 데이터를 HTTP 메세지의 Body에 담아서 전송한다.

  • POST는 캐시가 남지 않아 보안적인 면에서 유리하다.
  • POST 요청은 실패 시 반복하지 않는다.
  • POST는 데이터 길이에 제한이 없다.
  • POST는 정보를 숨길 수 있다.

 

차이점

  • 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.
  • 요청에 body 유무 : GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.

  • 멱등성 (idempotent) : GET 요청은 멱등이며, POST는 멱등이 아니다.

 

 

 

간단 정리

GET은 일단 SELECT 기능면에서 우수하여 SELECT 기능으로 많이 쓰고,캐시가 남아있어 보안적인 측면이 좋지 않으나, 전송속도가 우수하고 파라미터가 url에 노출되는 점이 있다.

POST는 주로 CREATE,UPDATE,DELETE에 사용되며,캐시가 남지 않아 보안적인 면에서 좋고 요청 시 Request Body에 데이터가 들어가기 때문에 파라미터가 노출 되지 않는점이 큰 차이점이다.
728x90
728x90