프로그래밍이나 API를 공부하다 보면 GET과 POST라는 말을 정말 자주 보게 된다. 특히 로그인 기능이나 게시판, 회원가입 같은 예제를 보면 거의 항상 등장한다.
하지만 처음에는 둘 다 그냥 “서버에 요청하는 것”처럼 보여서 차이를 이해하기 어렵다. 나도 처음에는 GET과 POST가 거의 같은 것인 줄 알았다. 그런데 직접 로그인 기능과 게시판을 만들어보니, GET과 POST는 사용하는 목적이 완전히 다르다는 것을 알게 됐다.
결론부터 말하면, GET은 서버에서 정보를 가져올 때 사용하고, POST는 서버에 새로운 정보를 보낼 때 사용한다.
쉽게 말하면:
- GET = “보여줘”
- POST = “저장해줘”

GET은 정보를 가져오는 요청이다
GET은 서버에 저장된 정보를 보여달라고 요청할 때 사용한다.
예를 들어 아래와 같은 상황에서 GET을 사용한다.
- 게시판 글 보기
- 상품 목록 보기
- 날씨 정보 보기
- 검색 결과 보기
예를 들어 쇼핑몰 사이트에서 상품 목록 페이지를 열었다고 해보자. 그러면 브라우저는 서버에게 “상품 목록을 보여줘”라고 요청한다.
이때 사용하는 것이 GET이다.
GET /products
그러면 서버는 상품 목록을 다시 보내준다.
즉, GET은 서버에 있는 정보를 읽어오기 위한 요청이다.
검색창도 마찬가지다. 예를 들어 사용자가 “노트북”을 검색하면, 브라우저는 아래처럼 요청할 수 있다.
/search?keyword=노트북
이처럼 GET은 보통 주소 뒤에 어떤 정보를 원하는지 함께 붙는다.
GET은 주소창에 내용이 보인다
GET의 가장 큰 특징은, 요청 내용이 주소창에 보인다는 것이다.
예를 들어 검색 결과를 보면 주소가 아래처럼 바뀌는 경우가 많다.
https://example.com/search?keyword=shoes
여기서 ?keyword=shoes 부분이 바로 서버에 보낸 정보다.
즉, GET은 어떤 정보를 요청했는지 주소에 그대로 나타난다.
그래서 GET은:
- 검색어
- 페이지 번호
- 정렬 방식
처럼 보여도 괜찮은 정보를 보낼 때 사용한다.
반대로 비밀번호나 개인정보처럼 숨겨야 하는 내용에는 GET을 사용하면 안 된다.
나도 처음에는 로그인할 때 GET을 사용해도 되는 줄 알았다. 그런데 주소창에 아이디와 비밀번호가 그대로 보이는 것을 보고, 왜 위험한지 바로 이해하게 됐다.
POST는 새로운 정보를 서버에 보내는 요청이다
POST는 서버에 새로운 정보를 저장하거나 전달할 때 사용한다.
예를 들어 아래 같은 경우에 POST를 사용한다.
- 회원가입하기
- 로그인하기
- 댓글 작성하기
- 주문하기
예를 들어 회원가입 화면에서 이름과 이메일, 비밀번호를 입력했다고 해보자. 그러면 브라우저는 서버에게 아래처럼 요청한다.
POST /signup
그리고 사용자가 입력한 정보는 주소창이 아니라, 보이지 않는 요청 안에 담겨서 서버로 전달된다.
즉, POST는 새로운 정보를 서버에 저장해달라고 요청하는 방식이다.
그래서 POST는 보통:
- 비밀번호
- 주문 내용
- 개인정보
처럼 주소창에 보이면 안 되는 정보를 보낼 때 사용한다.
로그인에서는 왜 POST를 사용할까
로그인은 GET과 POST의 차이를 가장 쉽게 이해할 수 있는 예시다.
만약 로그인할 때 GET을 사용하면, 주소가 아래처럼 될 수 있다.
/login?id=mary&password=1234
즉, 아이디와 비밀번호가 주소창에 그대로 보인다.
이것은 매우 위험하다. 다른 사람이 주소를 보면 비밀번호를 알 수 있기 때문이다.
그래서 로그인은 보통 POST를 사용한다.
POST /login
그러면 아이디와 비밀번호는 주소창에 보이지 않고, 서버에만 전달된다.
즉, 중요한 정보를 보낼 때는 POST가 더 안전하다.
GET과 POST는 새로고침했을 때도 다르다
GET은 새로고침해도 같은 요청을 다시 해도 괜찮다.
예를 들어 상품 목록 페이지를 새로고침하면, 서버에게 다시 “상품 목록 보여줘”라고 요청하는 것뿐이다.
하지만 POST는 다르다.
예를 들어 댓글 작성 후 페이지를 새로고침하면, 브라우저는 “방금 보낸 댓글을 다시 보낼까요?”라고 물어볼 수 있다.
왜냐하면 POST는 새로운 정보를 저장하는 요청이기 때문이다.
만약 실수로 다시 보내면:
- 댓글이 두 번 올라갈 수 있다.
- 주문이 두 번 될 수 있다.
- 회원가입이 두 번 될 수 있다.
그래서 POST는 단순히 보여주는 것이 아니라, 실제로 서버 상태를 바꾸는 요청이라는 점이 중요하다.
GET과 POST를 가장 쉽게 비유하면
쉽게 비유하면 GET은 도서관에서 책을 빌려보는 것과 같다.
책을 읽고 나서 도서관은 바뀌지 않는다. 그냥 정보를 가져오는 것뿐이다.
반면 POST는 도서관에 새 책을 등록하는 것과 같다.
즉, 서버 안의 내용이 실제로 바뀐다.
그래서:
- GET = 보기만 하기
- POST = 새로 저장하기
라고 기억하면 가장 쉽다.
실제로 웹사이트에서는 어떻게 쓰일까
우리가 평소 사용하는 웹사이트도 GET과 POST를 계속 사용하고 있다.
| 상황 | 사용하는 방식 |
|---|---|
| 상품 목록 보기 | GET |
| 검색하기 | GET |
| 로그인하기 | POST |
| 댓글 작성하기 | POST |
| 회원가입하기 | POST |
예를 들어 유튜브에서 영상을 검색할 때는 GET을 사용한다. 하지만 댓글을 작성할 때는 POST를 사용한다.
쇼핑몰에서도 상품을 볼 때는 GET이고, 주문 버튼을 누를 때는 POST다.
즉, “정보를 보기만 하면 GET, 무언가를 저장하면 POST”라고 생각하면 된다.
GET과 POST 차이를 한 번에 정리하면
| 구분 | GET | POST |
|---|---|---|
| 역할 | 정보 가져오기 | 정보 저장하기 |
| 주소창 표시 | 보임 | 보이지 않음 |
| 예시 | 검색, 상품 목록, 날씨 | 로그인, 회원가입, 댓글 |
| 새로고침 | 다시 해도 문제 없음 | 중복 저장될 수 있음 |
처음에는 GET과 POST가 비슷하게 보일 수 있다. 하지만 “GET은 보여달라고 하는 것, POST는 저장해달라고 하는 것”이라고 생각하면 훨씬 쉽게 이해할 수 있다.
그리고 앞으로 API나 웹사이트를 공부하다 보면, 이 두 가지 요청 방식은 정말 자주 만나게 될 것이다.