Network

[Network] Get vs Post

딸기케잌🍓 2021. 6. 3. 20:52

사용자가 서버에 요청을 보내는 방법인 HTTP Method에는 GET방식과 POST 방식이 있습니다.

GET과 POST? 처음 들었을 땐 역시나 이게 뭐선소린고?싶었는데,,.

웹 개발자라면 당연히 알아야 하는 사항이라 포스팅해 봅니다.

 

 

GET 방식

특정 정보를 가져와서 조회하기 위해서 사용되는 방식입니다. 즉, 데이터를 요청할때만 사용됩니다.

 

특징

  • 요청 URL에 key와 value 쌍으로 변수와 값을 포함시켜 요청한다.
  • 데이터를 헤더에 포함하여 전송한다.
  • URL에 데이터가 노출되어 보안에 취약할 수 있다.
  • 캐싱이 가능하다.
  • 브라우저 히스토리에 남는다.

 

GET방식으로 요청할 때는 요청 URL에 파라미터를 포함하여 보냅니다.

요청 URL은 무한정 길 수 없으므로 요청하는 데이터 양에 한계가 있습니다. 길이 제한은 표준이 있는 것은 아니고 브라우저마다 제한이 다릅니다.

GET 방식은 특별히 전송하는 데이터가 없으므로 Body에는 보통 빈 상태로 전송이 되고 Body의 데이터를 설명하는 헤더의 Content-type 헤더필드도 들어가지 않습니다.

GET방식은 ?마크로 URL의 끝을 표시하고 변수1=값1&변수2=값2...형식으로 표현하여 요청합니다. 이 부분을 쿼리 스트링이라고 합니다.

www.swdy1233.com/posting?postingID=11&pageNumber=2

위 예제에서는 postingID(key)=11(value), pageNumber(key)=2(value)라는 값을 &마크를 사용하여 키와 밸류의 두개의 쌍으로 전송하고 있습니다. 

key와 value의 쌍이 중요 정보라면 그대로 URL에 노출되기에 주의해야 합니다.

중요한 정보가 포함되지 않은 상황에서 캐싱을 하여 속도를 높이거나 즐겨찾기를 하여 빠르게 해당 요쳥을 서버에 전송할 수 있습니다.

GET을 통해 서버에 리소스를 요청할 때 웹 캐시가 요청을 가로채 리소스의 복사본을 반환합니다. HTTP 헤더에서 cache-control 를 통해 캐시 옵션을 지정할 수 있습니다.

 

 

 

POST 방식

클라이언트에서 서버로 리소스를 생성하거나 업데이트하기 위해 사용하는 방식입니다. 게시판에 게시글을 작성하는 작업을 예로 들 수 있습니다.

 

 

특징

  • URL에 변수를 노출하지 않고 요청한다.
  • 데이터를 Body에 포함시킨다.
  • 캐싱 할 수 없다.
  • 브라우저 히스토리에 남지 않는다.

 

길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용합니다.

보통 HTML form 을 이용해 submit하여 서버로 전송합니다.

 

 

 

GET과 POST의 차이점

  사용목적 요청에 body유무 연산 결과
GET 서버의 리소스에서 데이터를 요청하기 위해 URL 파리미터에 요청하는 데이터를 담아 보내므로 body에 데이터가 없음 여러번 요청하더라도 서버의 리소스는 그대로
POST 서버의 리소스를 새로 생성하거나 업데이트를 위해 body에 데이터를 담아 요청 서버의 리소스가 변경될 수 있음

 

 

지금까지 언급한 점들이 기본적인 사항이고 개발을 하다보면 GET을 써야할지 POST를 써야할지 고민되는 상황이 오기 마련입니다.(고민없이 막 썼던 저를 반성,,....)

정리해보면

GET은 가져오는 것이고 POST는 수행하는 것입니다.

GET은 Select 적인 성향이 있는데 서버에서 어떤 데이터를 가져오는 용도이지 서버의 값이나 상태를 바꾸지 않습니다.

POST는 서버의 값이나 상태를 바꾸기 위해 사용합니다. 예로 글을 새로 등록하거나 수정하는 경우입니다.

 

가져오는곳에 GET을 써야하는 또 하나의 이유는,,

웹의 핵심이라고 하는 link문제 입니다. 특정 페이지를 다른 사람에게 공유하고 싶을 때는 주소창의 URL을 복사해서 줄 수 있어야 합니다. POST를 할 경우에는 값이 내부적으로 전달되므로 URL로 링크를 공유해 줄 수 없겠죠.

 

 

 

 

 

 

참고사이트

https://blog.outsider.ne.kr/312

 

GET과 POST의 차이 :: Outsider's Dev Story

다들 아시다시피 GET과 POST는 HTTP프로토콜을 이용해서 서버에 무언가를 전달할 때 사용하는 방식입니다. 웹개발자라면 당연히 알고 있어야 하는 사항이고 이걸 모르면 웹개발자체를 할 수가 없

blog.outsider.ne.kr

 

'Network' 카테고리의 다른 글

SSL  (0) 2020.01.19