본문 바로가기

CS/네트워크

GET과 POST의 차이

GET과 POST는 HTTP 프로토콜을 이용하여 클라이언트에서 서버로 무엇인가를 요청할 때 사용하는 방식이다.

GET

GET은 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드이다.

GET 방식은 요청하는 데이터가 HTTP Request Message의 Header 부분에 URL에 담겨서 전송된다.

URL 끝에 "?"를 붙이고 변수명1=값1&변수명2=값2.. 형식으로 파라미터를 작성하여 데이터를 전송한다.

이러한 방식은 URL이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다.

또, 보안이 필요한 데이터에 대해서는 데이터가 그대로 노출되는 문제가 있다.

POST

POST는 클라이언트에서 서버로 리소스를 생성하거나 변경하기 위해 데이터를 전송할 때 사용되는 메서드이다.

POST 방식의 request는 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다.

HTTP Message의 Body는 길이의 제한이 없고, GET 방식에 비해 보안적인 측면에서 낫다.

하지만 데이터를 암호화하지 않는 이상 비슷하다고 볼 수 있다.

GET과 POST의 차이점

사용목적

GET은 데이터를 가져오는 것이다. 서버에서 어떤 데이터를 가져와서 보여주는 용도이지, 서버의 값이나 상태 등을 변경하지 않는다.

반면, POST는 서버의 값이나 상태를 변경 or 추가하기 위해 사용된다.

 

캐싱

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

반면, POST는 캐시 되지 않는다. 때문에 POST 방식으로 요청해야 할 것을 데이터의 크기가 작고 보안적인 문제가 없다는 이유로 GET 방식으로 요청한다면 기존의 캐싱돼있던 데이터가 응답될 수 있다.

 

멱등성(Idempotent)

GET은 멱등이며, POST는 멱등이 아니다.

멱등의 사전적 정의는 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미한다.
GET은 리소스를 조회한다는 점에서 여러 번 요청하더라도 응답이 똑같다.

반면, POST는 리소스를 새로 생성하거나 변경할 때 사용되기 때문에 멱등이 아니다.(POST 요청이 발생하면 서버가 변경될 수 있다.)

 

 

GET과 POST는 이러한 차이점들이 있기 때문에 사용하려는 목적에 맞게 사용해야 한다.

'CS > 네트워크' 카테고리의 다른 글

SSL  (0) 2022.09.28
HTTP와 HTTPS  (0) 2022.09.16
HTTP  (0) 2022.09.12
TCP와 UDP  (0) 2022.09.09
TCP 3-way handshake & 4-way handshake  (0) 2022.09.06