WEB/HTML기초

GET방식 vs POST방식: 알기 쉽게 보는 차이점

찐망고 2024. 11. 16. 19:14

 

안녕하세요 찐망고 입니다.

 

얼마 전 제자가 면접을 보면서 받은 기술적인 질문 중 하나인데요.

머릿속으로 맴돌긴 하는데 긴장해서인지 정확히 답변하기가 힘들었다고 하더라고요

그래서 쉽게 답변하기 위한 내용을 포스팅해보려고 합니다.

 

GET 방식과 POST 방식은 웹에서 데이터를 전송하는 두 가지 주요 방식인데요

 

 

  1. GET 방식
    • 목적: 주로 데이터를 요청해서 서버로부터 정보를 가져올 때 사용함
    • 특징:
      • URL에 데이터를 포함해서 보내기 때문에 주소창에 ?name=찐망고&age=25 같은 쿼리 스트링이 보임
      • URL 길이 제한이 있어서 아주 많은 양의 데이터를 전송하기엔 적합하지 않음
      • 보안 측면에서, 데이터를 URL에 직접 노출하기 때문에 민감한 정보를 보낼 때는 사용하지 않는 게 좋음
    • 사용 예: 검색어 입력 후 검색 결과를 보여주는 페이지(구글 검색 등), 필터링(카테고리, 가격대) 기능, 공유 링크
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>GET 방식 예시</title>
</head>
<body>
  <h2>GET 방식으로 데이터 전송</h2>
  <form action="/search" method="GET">
    <label for="query">검색어:</label>
    <input type="text" id="query" name="query" required>
    <button type="submit">검색</button>
  </form>
</body>
</html>

 

curl "https://example.com/search?query=찐망고"

 

위 코드에서 <form> 태그의 method="GET"으로 설정했기 때문에, 검색어를 입력하고 제출하면 URL이 다음과 같은 형태로 보입니다.

위 명령어는 https://example.com/search URL로 query=찐망고라는 쿼리 파라미터를 포함해 GET 요청을 보냅니다.

서버가 응답을 주면, 그 응답이 터미널에 표시되는 거죠

 

2. POST 방식

  • 목적: 데이터를 서버에 저장하거나, 서버에서 작업을 수행하도록 요청할 때 주로 사용함
  • 특징:
    • 데이터가 **본문(body)**에 담겨 전송되기 때문에 URL에는 나타나지 않음. 따라서 URL 길이 제한도 없고, GET 방식보다 더 많은 데이터를 안전하게 전송할 수 있음
    • 상대적으로 보안이 좋지만 완전히 안전하다고 할 수는 없어서, 로그인 같은 민감한 정보는 SSL을 사용해 암호화가 필요함.
  • 사용 예: 회원가입, 로그인 폼 전송, 댓글 작성, 구글폼양식 등
<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>POST 방식 예시</title>
</head>
<body>
  <h2>POST 방식으로 데이터 전송</h2>
  <form action="/login" method="POST">
    <label for="username">아이디:</label>
    <input type="text" id="username" name="username" required>
    <br>
    <label for="password">비밀번호:</label>
    <input type="password" id="password" name="password" required>
    <br>
    <button type="submit">로그인</button>
  </form>
</body>
</html>

 

이 코드에서는 method="POST"로 설정했기 때문에, 아이디와 비밀번호가 URL에 노출되지 않고 서버로 전송됩니다.

보안이 중요한 정보를 다룰 때 POST 방식이 적합한 이유죠

 

정리하자면,

GET은 데이터를 '요청'해서 가져올 때 쓰고, POST는 데이터를 '전송'해서 저장하거나 처리할 때 주로 사용됩니다.

 

사용예시를 머릿속으로 그려보면 바로 알겠죠?