TIL/For Interview

GET과 POST의 차이를 아시나요?

"유니" 2023. 4. 4. 13:13

 

HTTP Method란 클라이언트가 서버로 요청을 보내는 방법인데요, 쉽게 풀어서 이야기 하자면 유저가 어떤 홈페이지로 이동하기 위해 URL을 주소창에 작성하고 엔터를 누르면 페이지로 이동합니다. 로그인을 위해 아이디와 패스워드를 입력하고 엔터를 치면 다음 페이지로 넘어가는 것처럼요. 

이럴 때 서버 내부에서는 클라이언트의 요청에 응답하기 위해 처리를 해주어야 하는데, GET과 POST가 그 중 하나라고 할 수 있습니다.

 

🍏  GET 과 POST의 차이점

- 단어의 뜻 그대로 GET은 가져오다, POST는 제출하다, 발송하다의 개념으로 받아들이면 조금 쉽습니다. 

GET은 말 그대로 우리가 필요한 정보를 얻기위해 무언가를 가져오는(GET) 상황과 유사하고, POST는 우리가 어떤 서류나 문서를 제출/ 수행하기 위해 사용하는 방식입니다. 

 

 

그렇다면 각각의 특징에 대해 더 자세히 알아 볼게요. 

 

📝 GET 

- GET은 어떤 정보를 가져오는 것입니다. 예를 들면 게시판의 리스트를 가져올 때 GET을 쓸 수 있겠죠? 

 

 

✓ URL이 노출 된다. (보안에 취약하다) 

✓ 데이터의 생성/수정/삭제 없이 받아오기만 할 때 사용된다. 

✓ 길이의 제한이 있다. (브라우저마다 제한이 다르다.)

✓ 캐시가 가능하다.

✓ 브라우저 히스토리에 남는다. 

 

 

GET 방식은 간단한 데이터를 URL에 넣도록 설계 되었기 때문에 데이터를 보내는 양에 한계가 있습니다. 브라우저에서 최대 길이를 제한하고 있는 것이죠. 

또한 요청을 전송할 때 필요한 데이터를 BODY에 담지 않고, 쿼리스트링을 통해 전달 합니다.

 

🔎 쿼리스트링이란? 

URL 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 파라미터를 쿼리스트링이라 부릅니다. 

예를 들면 www.forexample.com/resources?name=hoi&pw=hoihoi  와 같은 것이죠. 

 

GET은 이처럼 URL에 정보를 담기 때문에 실제 웹사이트에서 ID/PW 같은 중요한 정보를 GET 방식으로 사용하면 개인정보가 노출 되는 문제가 발생합니다. 

 

 

📝 POST

- POST는 어떤 문서를 수정하거나 작성할 때 사용하는 방식입니다.

 

 

✓ URL에 데이터가 노출되지 않아서 기본적인 보안이 되어 있다.

✓ 캐싱할 수 없다.

✓ 브라우저에 히스토리 기록이 남지 않는다.

✓ 데이터를 BODY에 포함시키지 않는다. 

 

 

POST방식은 BODY에 데이터를 넣어서 전송합니다. 따라서 메세지 길이의 제한은 없지만 최대 요청을 받는 시간인 Time Out이 존재하며, 클라이언트에서는 페이지를 요청하고 기다리는 시간이 존재합니다. 

POST는 URL에 데이터가 노출 되지 않으므로 즐겨찾기나 캐싱이 불가능하지만 쿼리스트링 뿐만 아니라, 라디오버튼, 텍스트 박스와 같은 객체의 값도 전송이 가능합니다.