GET과 POST의 차이는 무엇인가요?

meek·2023년 12월 27일

💡 GET과 POST의 차이는 어떤 것이 있는지 알아보겠습니다.

GET과 POST는 HTTP 메서드로 클라이언트에서 서버로 무언가를 요청할 때 사용되고 있습니다.

요약

GET은 서버에서 어떤 데이터를 가져와서 보여줄 때 사용합니다. 어떤 값이나 내용, 상태 등을 바꾸지 않는 경우에 사용을 하는 것입니다.
POST는 서버상의 데이터 값이나 상태를 바꾸기 위해서 주로 사용됩니다.

GET이란?

GET클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드입니다.(예. 게시판의 게시물을 조회할 때)
GET을 통한 요청은 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링(query string)이라고 부릅니다.
방식은 URL 끝에 "?"을 붙이고 그 다음 변수명1=값1&변수명2&값2... 형식으로 이어 붙이면 됩니다.
예) www.example.com/show?name1=value1&name2=value2

서버에서는 name1과 name2라는 파라미터 명으로 각각 value1과 value2의 파라미터 값을 전달 받을 수 있습니다.

GET의 특징

  1. GET은 불필요한 요청을 제한하기 위해 요청이 캐시 될 수 있습니다.
    GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대신 리소스의 복사본을 반환한다.
    HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션을 지정할 수 있다.

  2. GET 요청을 브라우저 히스토리에 남는다.

  3. GET 요청은 북마크 될 수 있다.

  4. GET 요청은 길이 제한이 있다.
    GET 요청의 길이 제한은 표준이 따로 있는건 아니지만 브라우저마다 제한이 다르다고 한다.

  5. GET 요청은 중요한 정보를 다루면 안된다.
    GET 요청은 파라미터에 다 노출이 되기 때문에 최소한으로 보안이 필요한 정보를 담아야 한다.

  6. GET은 데이터를 요청할때만 사용된다.

  7. Get 요청은 성공 시, 200(Ok) HTTP 응답 코드를 XML, JSON뿐만 아니라 여러 데이터(html, txt 등..), 여러 형식의 데이터와 함께 반환한다.


POST란?

POST클라이언트에서 서버 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용되는 메서드입니다. (예. 게시판에 게시글을 작성할 때)
POST는 전송할 데이터 HTTP 메세지 body 부분에 담아서 서버로 보내게 됩니다.(body의 타입은 Content-Type 헤더에 따라 결정됩니다.)

GET에서 URL의 파라미터로 보냈던 name1=value1&name2=value2가 body에 담겨 보내진다 생각하면 됩니다.
POST로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 드러나지 않아 보안이 필요한 부분에서 많이 사용되고 있습니다.
POST를 통한 데이터 전송은 보통 HTML form을 통해 서버로 전송됩니다.

POST의 특징

  1. POST 요청은 캐시되지 않는다.
  2. POST 요청은 브라우저 히스토리에 남지 않는다.
  3. POST 요청은 북마크되지 않는다.
  4. POST 요청은 데이터 길이에 제한이 없다.

GET과 POST의 차이점

위에서도 차이를 알 수 있지만 추가적으로 차이점을 정리해보면 다음과 같습니다.

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

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

  • 멱등성(idempotent)
    GET 요청은 멱등성을 가지고 있으며, POST는 멱등성을 가지고 있지 않습니다.

🗨️ 멱등?

멱등성은 어떤 작업이 여러 번 반복되더라도 결과가 변하지 않는 성질을 나타냅니다. 즉, 한 번 이상 적용되더라도 동일한 결과를 얻을 수 있는 경우를 말합니다.
GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 같습니다. POST는 리소스를 새로 생성하거나 업데이트할 때 사용되기 때문에 멱등성을 가지고 있지 않다고 볼 수 있습니다.
POST뿐 아니라 PUT이나 DELETE와 같은 메서드도 멱등성을 가지는 경우도 있습니다.


참고자료

profile
hello, world!

0개의 댓글