GET VS POST

EVELO·2023년 2월 7일
0

개발지식

목록 보기
2/14

GET, POST 차이

GET,POST는 둘다 브라우저에서 서버로 요청하는 메서드입니다.

GET 방식

GET은 데이터를 호출하는 목적으로 사용하며, URL에 파라미터를 추가하여 전송되기 때문에 보안에 취약합니다. 또한 보내는 길이는 한계가 있고 헤더에 담아서 보내집니다.

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

URL의 끝에 ?와 함께 KEY와 value로 쌍을 이루는 요청 파라미터를 쿼리스트링이라고 부릅니다. 만약, 요청 파라미터가 여러 개이면 &로 연결합니다.

캐싱 기능이 있기 때문에 보안에 민감하지 않은 데이터를 파라미터로 빠르게 조회해 오는데 유용한 방식입니다. (URL만 알면 언제든지 호출 가능)

캐싱 기능으로 js, css, 이미지 같은 정적 컨텐츠는 데이터양이 크고, 변경될 일이 적어서 반복해서 동일한 요청을 보낼 필요가 없습니다. 정적 컨텐츠를 요청하고 나면 브라우저에서는 요청을 캐시해두고, 동일한 요청이 발생할 때 서버로 요청을 보내지 않고 캐시된 데이터를 사용합니다.

POST 방식

POST는 데이터를 저장하는 목적으로 사용하며, 요청 데이터가 HTML Body에 들어가서 보내기 때문에 외부에 요청 데이터가 노출되지 않고, 보낼 수 있는 데이터의 양도 제한이 없습니다. (파라미터뿐만 아니라 파일도 서버로 전송 가능)

그리고 POST로 요청을 보낼 때는 요청 헤더의 Content-Type에 요청 데이터의 타입을 표시해야 합니다.

Content-Type의 종류로는 application/x-www-form-urlencoded, text/plain, multipart/form-data 등이 있다

캐싱 기능은 없기 때문에 빠르고 반복적으로 호출하는 경우에는 적합하지 않습니다.

정리

GET

  • GET 요청은 캐시가 가능하다.
  • GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다. HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.
  • GET 요청은 브라우저 히스토리에 남는다.
  • GET 요청은 길이 제한이 있다.
  • GET 요청은 중요한 정보를 다루면 안된다. (보안)

POST

  • POST 요청은 캐시되지 않는다.
  • POST 요청은 브라우저 히스토리에 남지 않는다.
  • POST 요청은 데이터 길이에 제한이 없다.

차이점

  • 사용목적 : GET은 서버의 리소스에서 데이터를 요청할 때, POST는 서버의 리소스를 새로 생성하거나 업데이트할 때 사용한다.

  • 요청에 body 유무 : GET 은 URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없다. POST 는 body 에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body가 존재한다.

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

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

profile
스펀지가 되고싶은 개발자

0개의 댓글