GET과 POST의 차이점

GET이란 무엇입니까?


GET은 클라이언트에서 서버로 리소스의 정보를 요청하는 데 사용되는 방법입니다.

예를 들어 게시판 게시물 O를 검색하는 데 사용할 수 있습니다.

URL 주소 끝에 GET에 의한 요청을 매개변수로 삽입하여 전송하는데 이 부분을 질의 문자열이라고 합니다.

방법은 “?” URL 끝에 추가한 다음 변수 이름 1 = 값 1 & 변수 이름 2 = 값 2… 형식으로 추가합니다.

ex) 다음과 같이.

www.example.com/show?이름1=값1&이름2=값2

서버에서는 value1과 value2의 파라미터 값을 각각 name1과 name2라는 파라미터 이름으로 받을 수 있다.

GET의 기능


  • GET 요청을 캐시할 수 있습니다.

  • : GET을 통해 서버에서 리소스를 요청하면 웹 캐시가 요청을 가로채서 서버에서 다시 다운로드하지 않고 리소스의 복사본을 반환합니다.

    캐시 옵션은 Cache-Control 헤더를 사용하여 HTTP 헤더에 지정할 수 있습니다.

  • GET 요청은 브라우저 기록에 남아 있습니다.

  • o GET 요청을 북마크할 수 있습니다.

  • GET 요청의 길이 제한은 O입니다.

  • : GET 요청의 길이를 제한하는 기준은 없으나 브라우저마다 제한이 다르다고 합니다.

  • GET 요청은 민감한 정보를 처리하면 안 됩니다.

    ( 보안 )
  • : GET 요청은 모든 매개변수가 노출되므로 최소한의 보안 인식으로 간주됩니다.

  • GET은 데이터를 요청하는 데만 사용됩니다.

POST란 무엇입니까?


POST는 리소스를 생성하거나 업데이트하기 위해 클라이언트에서 서버로 데이터를 보내는 데 사용되는 방법입니다.

예를 들어 게시판에 글을 작성할 때 사용합니다.

POST는 전송할 데이터를 HTTP 메시지 본문에 담아 서버로 보낸다.

(텍스트 유형은 Content-Type 헤더에 따라 결정됩니다.

)

GET에서 URL의 매개변수로 전달된 name1=value1&name2=value2가 본문으로 전달되는 것을 상상할 수 있습니다.

POST로 데이터를 보낼 때 길이 제한이 없어 대량의 데이터를 보낼 때나 GET처럼 데이터가 외부로 노출되지 않을 때 사용하기 때문에 보안이 필요한 분야에서 많이 사용된다.

(단, 데이터가 암호화되지 않은 경우 마지막에 본문에서 데이터를 볼 수 있습니다.

)

POST를 통한 데이터 전송은 일반적으로 HTML 형식을 통해 서버로 전송됩니다.

POST의 특징


  • POST 요청은 캐시되지 않습니다.

  • POST 요청은 검색 기록에 지속되지 않습니다.

  • POST 요청은 북마크되지 않습니다.

  • POST 요청에는 데이터 길이 제한이 없습니다.

GET과 POST의 차이점


GET과 POST의 차이점은 명백하지만 추가 차이점은 다음과 같이 요약됩니다.

  • 사용 목적 : GET은 서버 리소스에 데이터를 요청하는 데 사용되며 POST는 서버 리소스를 생성하거나 업데이트하는 데 사용됩니다.

  • DB 측면에서 GET은 SELECT에 가깝고 POST는 Create에 가깝습니다.

  • 요청에 본문이 있습니까? : GET은 요청된 데이터를 URL 매개변수로 전송하기 때문에 HTTP 메시지에는 본문이 포함되어 있지 않습니다.

    POST는 본문에 데이터를 보내므로 본문은 자연스럽게 HTTP 메시지에 존재합니다.

  • 멱등원 : GET 요청은 멱등적(즉, 연산을 여러 번 적용해도 결과가 변하지 않음), POST는 멱등적이지 않습니다.