안녕하세요 찐망고 입니다.
얼마 전 제자가 면접을 보면서 받은 기술적인 질문 중 하나인데요.
머릿속으로 맴돌긴 하는데 긴장해서인지 정확히 답변하기가 힘들었다고 하더라고요
그래서 쉽게 답변하기 위한 내용을 포스팅해보려고 합니다.
GET 방식과 POST 방식은 웹에서 데이터를 전송하는 두 가지 주요 방식인데요
- 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는 데이터를 '전송'해서 저장하거나 처리할 때 주로 사용됩니다.
사용예시를 머릿속으로 그려보면 바로 알겠죠?
'WEB > HTML기초' 카테고리의 다른 글
웹 접근성을 위한 ARIA (0) | 2024.11.21 |
---|---|
웹 페이지가 보이는 순서와 브라우저 렌더링 과정 설명 (0) | 2024.11.17 |
VSCode) Alt + B 단축키로 HTML 파일 브라우저로 바로 열기 (0) | 2024.10.04 |
WOFF와 WOFF2의 차이점 (0) | 2024.08.22 |
웹사이트의 Apple Touch Icon 설정 가이드 (0) | 2024.07.17 |