GET, POST의 특징 및 차이

bella·2022년 3월 20일
0

GET 방식은 이름 그대로 무언가를 가져오는 것
POST 방식은 포스트를 붙이듯이 무언가를 만들거나 수정하는 것

  • Get은 서버에서 어떤 데이터를 가져와서 보여줄때 사용
    -> 어떤 값이나 내용, 상태등을 바꾸지 않는 경우에 사용
    -> 글의 내용에 대한 목록을 보여주는 경우나, 글의 내용을 보는 경우

  • Post는 서버상의 데이터 값이나 상태를 바꾸기 위해서 사용
    -> 글의 내용을 저장하고, 수정하는 경우


📍 GET 방식

  • 클라이언트가 서버로 데이터를 요청하기 위해 사용되는 Method
  • GET 요청을 할 때 Body 부분은 비어있고 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드도 적지 않는다.
  • URL뒤에 쿼리 스트링(Key와 Value)을 붙이고 HTTP 패킷의 헤더에 포함해서 서버에 데이터를 요청한다.

특징

  • URL에 쿼리 스트링(데이터)을 붙여서 서버에 전송
  • 데이터를 Header(헤더)에 포함하여 전송
  • URL에 정보들이 그대로 노출되기 때문에 POST 방식보다 상대적으로 보안에 취약
  • 캐싱이 가능
  • POST 방식보다 상대적으로 전송 속도가 빠름
  • 전송하는 데이터양에 한계가 있음 (브라우저마다 GET 요청 길이 제한 존재)
  • 브라우저 히스토리에 기록이 남음
  • 브라우저마다 글자 수 제한이 있기 때문에 게시판의 게시물, 목록 조회와 같은 간단한 데이터 요청할 때 적합

💡 캐싱이란 한번 접근 후 또 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것


📍 POST 방식

  • 클라이언트가 서버로 데이터를 전송해 리소스를 추가하거나 생성하기 위해 사용되는 Method
  • POST 요청 시 HTTP 패킷의 헤더에 Body의 콘텐츠 타입을 명시하는 Content-Type 헤더 필드를 포함하고 HTTP 패킷의 Body에는 데이터를 담아서 서버로 전송한다.

특징

  • 데이터들을 URL뒤에 붙여서 서버로 보내는 것이 아닌 Body에 담아서 전송
  • 요청 헤더의 Content-Type에 콘텐츠 타입을 명시
  • 데이터들이 URL에 노출되지 않기 때문에 GET 방식보다 상대적으로 보안적
  • 데이터들을 Body에 담기 때문에 서버로 보내는 데이터의 양은 제한 없음
  • URL에 데이터가 노출되지 않으므로 캐싱 불가
  • 클라이언트에서 인코딩, 서버에서 디코딩
  • 요청받는 시간제한 존재
  • 브라우저 히스토리에 기록이 남지 않음
  • 보통 서버의 값이나 상태를 변경하기 위해 사용되므로 글쓰기, 글 수정과 같은 작업에 적합하다.

👁‍🗨 비교표

HTTP MethodGET 방식POST 방식
URL 예시http://localhost:3000/login?id=admin&pw=1234http://localhost:3000/login
데이터가 담기는 곳HTTP 패킷 HeaderHTTP 패킷 Body
리소스 전달 방식쿼리스트링HTTP Body
HTTP 응답 코드200201
URL에 데이터 노출 여부OX
캐싱 가능 여부OX
브라우저 기록OX
북마크 추가OX
데이터 길이 제한OX
멱등성(idempotent)OX

💡 멱등성연산을 여러 번 하더라도 결과가 달라지지 않는 성질을 의미하며, get 요청의 경우 여러 번 요청해도 응답이 같지만 post 요청의 경우엔 리소스를 새로 생성하거나 업데이트하므로 서버에게 동일한 요청을 여러 번 전송해도 응답은 항상 다를 수 있다.


📍 POST vs PUT

  • POST는 INSERT, PUT은 UPDATE
  • POST는 멱등하지 않고 PUT은 멱등하다.
  • POST는 새로운 데이터를 계속 생성하기 때문에 요청시마다 데이터를 생성하지만, PUT은 사용자가 데이터를 지정하고 수정하는 것이기 때문에 같은 요청을 계속하더라도 데이터가 계속 생성되지 않는다.

📍 PUT vs PATCH

  • PUT은 해당 자원의 전체를 교체, PATCH는 일부를 변경
  • PUT은 멱등하지만, PATCH는 멱등하지 않다.
  • PUT은 전체 자원을 업데이트 하기 때문에 동일 자원에 대해서 동일하게 PUT을 처리하는 경우 멱등하게 처리되는 반면 PATCH로 처리되는 경우 자원의 일부가 변경되기 때문에 멱등성을 보장할 수 없다.
profile
기록하며 공부하기

0개의 댓글