[웹 기초] 3. GET과 POST는 무엇이 다른가

2026. 3. 29. 12:10·Web/Web Basics

 

request와 response가 한 쌍으로 동작한다는 흐름을 잡았으면,
이제 “요청을 보내는 방식”을 구분해야 한다.

브라우저가 서버로 요청(request)을 보낼 때 대표적으로 쓰는 방식이 두 가지이다.

  • GET
  • POST

GET과 POST는 단순히 “이름이 다른 요청”이 아니다.
요청의 목적과 데이터 전달 방식이 달라진다.

 

 

GET은 “조회”에 가까운 요청이다

GET은 보통 서버에게 이렇게 말하는 요청이다.

“이거 보여줘”
“이 정보 조회해줘”

 

GET의 가장 큰 특징은 요청에 필요한 데이터가 URL에 드러난다는 점이다.

예를 들어 이런 형태이다.

  • `/search?q=java`
  • `/products?category=shoes&page=2`

URL 뒤에 ?로 시작해서 붙는 부분을 쿼리 스트링(query string) 이라고 한다.
여기에는 키=값 형태로 데이터가 들어간다.

  • `q=java`
  • `category=shoes`

여러 개를 보내고 싶으면 &로 이어붙인다.

  • `/search?q=java&sort=recent`

즉 GET은 보통 다음 특징을 가진다.

  • URL만 보면 요청 데이터가 눈에 보인다
  • 링크로 공유하기 쉽다
  • 북마크(즐겨찾기)하기 쉽다
  • 주로 “조회” 용도로 사용된다

 

 

POST는 “처리”에 가까운 요청이다

POST는 보통 서버에게 이렇게 말하는 요청이다.

 

“이 데이터를 처리해줘”
“등록해줘 / 수정해줘 / 삭제해줘”

 

POST의 핵심 특징은 URL과 데이터를 분리해서 보낸다는 점이다.

GET처럼 URL 뒤에 데이터가 붙지 않고,
요청 메시지의 본문(body)에 데이터가 실려서 전달되는 방식이다.

즉 POST는 보통 이런 특징을 가진다.

  • URL만 봐서는 어떤 데이터가 전송됐는지 잘 보이지 않는다
  • 보통 폼(form) 제출에서 많이 발생한다
  • 회원가입, 로그인, 글쓰기처럼 “상태를 바꾸는 작업”에 자주 쓰인다

 

 

GET은 공유가 쉽고, POST는 공유가 어렵다

GET은 데이터가 URL에 포함되기 때문에 그대로 링크를 복사해서 보내면 된다.

예를 들어

  • `/search?q=java`

이건 그대로 공유하면 다른 사람도 같은 결과를 볼 수 있다.

반면 POST는 데이터가 URL이 아니라 body로 가기 때문에
주소창에 URL만 복사해서 보내면 같은 요청을 재현하기 어렵다.

즉 POST는 애초에 “공유”를 목표로 만들어진 방식이 아니다.
보통은 “처리”를 목표로 한다.

 

 

폼(form)과 GET/POST의 관계

브라우저에서 입력값을 서버로 보내는 대표적인 방식이 <form>이다.

<form> 태그에는 보통 두 가지 속성이 중요하다.

  • action : 어디로 보낼지(요청 URL)
  • method : 어떤 방식으로 보낼지(GET/POST)

예를 들어 아래처럼 쓰면,

`<form action="/login" method="post">`

사용자가 입력한 값은 POST 방식으로 /login에 전송된다.

그리고 <input> 태그의 name 속성값이 “키”가 된다.

  • `<input name="email">`
  • `<input name="password">`

즉 서버는 이런 식으로 값을 꺼내게 된다.

  • email이라는 이름으로 온 값
  • password라는 이름으로 온 값

(서블릿에서는 나중에 request.getParameter("email") 같은 형태로 읽게 된다)

 

 

중요한 오해 하나: GET/POST는 “보안” 문제가 아니다

많이들 GET이 위험하고 POST가 안전하다고 생각하는데,
정확히 말하면 GET/POST 자체가 보안을 보장하는 것은 아니다.

  • GET은 URL에 데이터가 노출되는 특성이 있다
  • POST는 URL에는 안 보일 뿐, 요청 자체에는 데이터가 포함된다

진짜 보안은

  • HTTPS로 암호화된 통신을 쓰는지
  • 인증/인가를 제대로 하는지
  • 서버에서 검증을 하는지

같은 부분에서 결정된다.

즉 “POST니까 안전하다”는 말은 정확하지 않다.
다만 POST는 “주소창에 그대로 드러나지 않는다”는 차이가 있을 뿐이다.

 

 

핵심 정리

GET과 POST를 한 문장으로 정리하면 다음과 같다.

  • GET: URL에 데이터를 포함해서 보내는 방식, 주로 조회
  • POST: URL과 데이터를 분리해서 보내는 방식, 주로 처리(등록/수정/삭제)

그리고 지금 단계에서 가장 중요한 결론은 이것이다.

브라우저는 목적에 따라 GET 또는 POST로 request를 만들고, 서버는 그에 맞게 response를 돌려준다

 

'Web > Web Basics' 카테고리의 다른 글

[웹 기초] 5. 웹 서버와 WAS  (0) 2026.03.29
[웹 기초] 4. 정적 데이터와 동적 데이터는 무엇이 다른가  (0) 2026.03.29
[웹 기초] 2. request와 response는 어떻게 한 쌍으로 동작하는가  (0) 2026.03.29
[웹 기초] 1. 브라우저와 서버  (0) 2026.03.29
[웹 기초] 0. 도입  (0) 2026.03.29
'Web/Web Basics' 카테고리의 다른 글
  • [웹 기초] 5. 웹 서버와 WAS
  • [웹 기초] 4. 정적 데이터와 동적 데이터는 무엇이 다른가
  • [웹 기초] 2. request와 response는 어떻게 한 쌍으로 동작하는가
  • [웹 기초] 1. 브라우저와 서버
sqaxe1
sqaxe1
woojoo-devlog 님의 블로그 입니다.
  • sqaxe1
    Woojoo's Devlog
    sqaxe1
  • 전체
    오늘
    어제
    • 분류 전체보기 (148)
      • Backend (9)
        • Servlet (7)
        • Spring (2)
      • Frontend (1)
      • CS (0)
      • Book (33)
        • 자바 웹 프로그래밍 Next Step (30)
        • 테스트 주도 개발: 고품질 쾌속개발을 위한 TDD.. (1)
        • 성공과 실패를 결정하는 1%의 네트워크 원리 (2)
      • Engineering (0)
        • Testing (0)
      • Infra (6)
        • AWS (6)
      • Java (4)
      • Network (1)
      • 김영한 (28)
        • 자바 입문 (8)
        • 실전 자바 - 기본편 (6)
        • 실전 자바 - 중급편 (10)
        • 실전 자바 - 고급편 (4)
      • Web (39)
        • Web Basics (39)
      • Project (24)
        • NeoSquare (0)
        • Memo Evolution (24)
      • 정보처리기사 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발서적
    aws
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
sqaxe1
[웹 기초] 3. GET과 POST는 무엇이 다른가
상단으로

티스토리툴바