◇ PART · WEB

GET vs POST

웹의 동작 원리 — 데이터를 어떻게 실어 보내는가

학습 목표

  • GETPOST 가 데이터를 어디에 싣는지 안다
  • 언제 GET 을 쓰고 언제 POST 를 쓰는지 판단할 수 있다
  • 실제 폼을 두 방법으로 보내며 F12 로 차이를 본다

⚠️ 어디가 답답한가

전 차시까지 본 것

"GET 은 보여줘, POST 는 저장해줘 정도로구나."

그런데 — 둘 다 "데이터를 보낸다"는 점은 같은데, 실제로 뭐가 다를까요? 비밀번호를 입력했는데 URL 에 보이면 큰일 아닌가요?

🛠️ 두 가지 봉투 방식

GET = 엽서 / POST = 봉투

같은 편지를 부치더라도 엽서는 겉에 글자가 그대로 보이고, 봉투는 안에 넣어 봉인합니다.

GET → 엽서 : 데이터가 URL 에 그대로 (겉에 적힘) POST → 봉투 : 데이터가 메시지 바디에 숨겨짐 (안에 들어감)

GET 의 모습

이메일 검색 폼을 GET 으로 제출하면:


GET /search?q=spring&page=2 HTTP/1.1
Host: example.com

(바디 없음)
        

?q=spring&page=2 부분이 URL 안에 그대로 적혀 있습니다.

POST 의 모습

같은 검색을 POST 로 제출하면:


POST /search HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 14

q=spring&page=2
        

URL 은 깔끔하고, 데이터는 바디 안에 들어갑니다.

차이를 한눈에

항목 GET POST
데이터 위치URL 의 ?메시지 바디
길이 제한있음 (브라우저별 ~2KB)사실상 없음
즐겨찾기·공유가능 (URL 만 복사)불가
새로고침 시그냥 다시 요청"재제출 하시겠습니까?"
민감한 데이터❌ (URL 노출)✅ (바디 숨김)
기본 용도조회제출/생성

언제 어느 것을?

GET 을 쓰는 때
  • 네이버 검색
  • 게시글 목록 보기
  • 게시글 상세 보기
  • 공유 가능한 링크
POST 를 쓰는 때
  • 회원가입
  • 로그인 (비밀번호!)
  • 게시글 작성
  • 댓글 작성

💻 직접 확인

  1. 네이버 검색창에 "spring" 입력 후 검색 → GET
  2. 주소창을 보면 ...?query=spring&... 등이 그대로
  3. 로그인 폼 제출 → POST
  4. F12 → Network 에서 메서드 열에 POST 표시, Payload 탭에 비밀번호가 바디로 들어감을 확인
스크린샷
F12 Network 탭에서 GET 요청과 POST 요청이 메서드 열에서 색상 다르게 보이는 화면

🔄 Before / After

전 차시 끝

메서드 이름은 알지만 둘이 어떻게 다른지 모름.

이번 차시 끝

데이터가 어디에 실리는지 알고, 회원가입 폼을 GET 으로 보내면 안 되는 이유를 설명할 수 있다.

이번 차시의 데이터 흐름

브라우저
GET
?q=spring
또는
POST
바디에 숨김
서버
같은 화살표(요청)가 두 가지 방식으로 갈라졌습니다

정리

오늘 들고 가는 것

  • GET = URL 에 데이터, 조회용
  • POST = 바디에 데이터, 제출/저장용
  • 비밀번호·민감 데이터는 무조건 POST

다음 차시: 무상태성과 쿠키·세션 — 서버가 사용자를 기억하지 못하는 이유와 그 해결책.