본문 바로가기
Daily Dev Q&A 정리 템플릿

26.01.21 GET, POST의 개념과 함께 데이터 흐름 알아보자.

by teg0 2026. 1. 21.

GET: 데이터를 "가져오기" 위한 방식

GET은 서버로부터 정보를 조회하기 위해 사용된다.
우리가 브라우저 주소창에 URL을 입력하고 엔터를 누르는 행위가 바로 GET 요청이다.

  • 특징: 모든 데이터를 URL에 담아 보낸다.
  • 데이터 흐름:
    1. 클라이언트가 URL 뒤에 데이터를 붙여 보낸다.
    2. 이 데이터 덩어리를 쿼리 스트링(Query String)이라고 부른다.
    3. 데이터가 주소창에 그대로 노출되므로 보안이 중요하지 않은 정보(검색어, 페이지 번호 등)를 다룰 때 사용한다.

 

POST: 데이터를 "처리하기" 위한 방식

POST는 서버의 리소스를 생성하거나 업데이트하기 위해 데이터를 보낼 때 사용된다.

회원가입이나 게시글 작성 등이 대표적인 예다.

  • 특징: 데이터를 URL이 아닌 HTTP 메시지의 바디(Body)에 담아 보낸다.
  • 데이터 흐름:
    1. 클라이언트가 데이터를 바디 영역에 숨겨서 보낸다.
    2. 주소창에는 보이지 않으며, 데이터 크기에 제한이 거의 없다.
    3. 비밀번호와 같은 민감한 정보나 대용량 데이터를 다룰 때 필수적이다.

 

데이터 흐름 요약

실제 데이터가 어떻게 흘러가는지 패킷 수준에서 보면 다음과 같다.

GET 요청의 패킷 예시 GET /search?q=apple HTTP/1.1

Host: google.com

(바디가 비어 있음)
POST 요청의 패킷 예시 POST /login HTTP/1.1

Host: myweb.com

Content-Type: application/x-www-form-urlencoded

(빈 줄)

id=user&password=1234 (데이터가 바디에 위치)

 

멱등성

GET의 멱등성: "YES"

GET은 서버에 저장된 데이터를 조회하는 것이 목적이다.

  • 동작 방식: 서버의 데이터를 변경하지 않고 그대로 읽어오기만 한다.
  • 멱등성인 이유: 특정 게시글을 1번 조회하든 100번 조회하든, 서버에 저장된 게시글 데이터 자체가 변하지는 않는다. 따라서 결과(서버 상태)가 항상 동일하므로 멱등하다.

 

POST의 멱등성: "NO"

POST는 서버에 새로운 리소스를 생성하거나 데이터를 처리하는 것이 목적이다.

  • 동작 방식: 요청을 보낼 때마다 서버에 새로운 데이터가 추가되거나 상태가 변경된다.
  • 멱등성이 아닌 이유: 결제 버튼을 한 번 눌렀을 때와, 네트워크 지연 때문에 실수로 세 번 눌렀을 때를 생각해 보면, 세 번 누르면 세 번의 결제가 발생할 수 있다(서버에 세 개의 주문 데이터 생성). 요청을 보낼 때마다 서버 상태가 변하므로 멱등하지 않는다.

 

멱등성이 왜 중요한가요? (실무 포인트)

이 개념이 중요한 이유는 네트워크 오류 발생 시 재시도(Retry) 전략 때문이다.

  • GET 요청 실패 시: "어차피 서버 데이터 안 바뀌니까 다시 한번 조회해 보자!" 하고 안전하게 다시 요청을 보낼 수 있다.
  • POST 요청 실패 시: "내가 보낸 요청이 서버에 이미 도달해서 결제가 된 걸까? 아니면 아예 안 간 걸까?"가 불확실하다. 무턱대고 다시 보내면 중복 결제 같은 사고가 터질 수 있어 주의가 필요하다.

 

면접 답변식 요약

GET은 서버로부터 리소스를 '조회'하기 위한 메서드이고, POST는 서버의 리소스를 '생성하거나 상태를 변경'하기 위한 메서드입니다."

GET은 모든 데이터를 URL의 쿼리 스트링(Query String)에 담아 전달합니다. 이로 인해 데이터가 주소창에 노출되어 보안에 취약하지만, 캐싱(Caching)이 가능하여 속도가 빠르다는 장점이 있습니다. 또한, 여러 번 호출해도 서버 상태가 변하지 않는 멱등성(Idempotency)을 가집니다.

POST는 데이터를 HTTP 메시지의 바디(Body)에 담아 전송합니다. URL에 데이터가 노출되지 않고 대용량 전송이 가능하며, 서버의 상태를 변경(예: 회원가입, 결제)하므로 멱등성을 가지지 않습니다.