GET방식과 vs POST방식
HTTP는 클라이언트와 서버 간 통신에 사용되는 프로토콜입니다.
HTTP 요청 메소드 중 GET 방식과 POST 방식은 웹 개발에서 가장 많이 사용되는 두 가지 방식입니다.
GET 방식과 POST 방식의 차이
GET | POST | |
데이터 전달 | URL 뒤에 파라미터를 추가하여 전달 | HTTP 요청 본문(body)에 데이터를 추가하여 전달 |
데이터 길이 | URL 길이에 제한이 있음 ( 2,048자 이하) | HTTP 요청 본문(body)의 크기에 제한이 있음 ( 2GB 이하) |
보안성 | URL에 데이터가 노출되기 때문에 보안성이 낮음 | HTTP 요청 본문(body)에 데이터가 포함되어 전달되므로 보안성이 높음 |
캐싱 | 브라우저에서 자동으로 캐싱됨 | 브라우저에서 캐싱되지 않음 |
사용상황 | 데이터 조회 사용자가 입력한 정보가 노출되어도 괜찮을 때 |
데이터 추가, 수정, 삭제 사용자가 입력한 정보가 노출되지 않아야할 때(로그인 등) |
GET 방식은 URL 뒤에 파라미터를 추가하여 데이터를 전달합니다. 이 방식은 간단하고 직관적이지만, URL에 데이터가 노출되기 때문에 보안성이 낮습니다.
또한 URL의 길이에 제한이 있기 때문에 대체로 2,048자 이하의 데이터를 전달하는 데 사용됩니다.
GET방식과 POST방식 쿼리스트링
먼저, GET 방식으로 요청을 보낼 때는 URL에 요청하는 데이터가 쿼리 스트링(query string) 형태로 포함됩니다.
이때, 쿼리 스트링은 URL + ?+ 데이터이름=값 형태로 표현됩니다.
<form action="http://catSaveTheWorld.com/search" method="GET">
<input type="text" name="query">
<button type="submit">검색</button>
</form>
POST 방식으로 요청을 보낼 때는 URL에 데이터가 포함되지 않습니다. 대신, 데이터는 HTTP 요청 본문(body)에 포함되어 전송됩니다. 이때, 데이터는 쿼리 스트링과 마찬가지로 name=value 형태로 표현됩니다.
위 코드에서는 사용자가 입력한 검색어(query)를 GET 방식으로 전송합니다. 따라서, 사용자가 "cat"을 검색하면, 아래와 같은 URL이 요청됩니다.
http://catSaveTheWorld.com/search?query=cat
아래는 POST 방식으로 요청을 보내는 HTML 코드입니다.
위 코드에서는 사용자가 입력한 사용자 이름(username)과 비밀번호(password)를 POST 방식으로 전송합니다. 이때, HTTP 요청 본문(body)에 데이터가 포함되어 전송되므로, URL에는 아무런 데이터가 포함되지 않습니다.
<form action="http://catSaveTheWorld.com/search" method="POST">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit">로그인</button>
</form>
http://catSaveTheWorld.com/login
GET방식 활용 예: 데이터 조회 (즐겨찾기 기능!)
- 검색 기능: 사용자가 검색어를 입력하고 서버에서 검색어를 받아서 처리한 후, 검색 결과를 브라우저에 노출
- 페이지 이동: 브라우저에서 다른 페이지로 이동할 때
- 쿠키와 같은 작은 데이터 전송: 브라우저와 서버 간에 쿠키와 같은 작은 데이터 전송시
POST방식 활용 예:
- 회원가입, 로그인: 사용자가 입력한 회원 정보를 서버에 전송하여 회원가입 또는 로그인 처리
- 게시글 작성: 사용자가 입력한 게시글 내용을 서버에 전송하여 게시글을 작성
- 파일 업로드: 사용자가 업로드한 파일을 서버에 전송하여 저장
Reference
https://dev-coco.tistory.com/60
https://www.geeksforgeeks.org/difference-between-http-get-and-post-methods/
+chatGPT활용!
'Web Programming' 카테고리의 다른 글
[Web] REST, RESFTful 설계원칙 / 디자인가이드 / 장점 (0) | 2023.05.09 |
---|---|
비동기통신 - AJAX와 JSON, 그리고 GSON (0) | 2023.03.16 |
Servlet과 JSP / 비교 / 차이점 (0) | 2022.12.14 |
[AJAX] AJAX란 / jQuery-AJAX 사용법 / AJAX 메소드 (0) | 2022.11.21 |
Servlet API / HTTPServlet 클래스 / HttpServletRequest 객체와 HttpServletResponse 객체 (0) | 2022.11.14 |