HTTP클라이언트와 서버 간 통신에 사용되는 프로토콜입니다.
HTTP 요청 메소드 그 중 GET 방식과 POST 방식은 웹 개발에서 가장 많이 사용되는 두 가지 방식이다.
GET 방식과 POST 방식의 차이
GET | POST | |
데이터 전송 | URL 뒤에 매개변수 추가 및 전달 | HTTP 요청 본문에 데이터 추가 및 전달 |
데이터 길이 | URL 길이에 제한이 있습니다(2,048자 이하). | HTTP 요청 본문(body) 크기에 제한이 있음(2GB 이하) |
보안 | URL에 데이터가 게시되므로 보안이 낮습니다. |
HTTP 요청 본문(body)에 데이터가 포함되어 전달되므로 보안이 높음 |
캐시 | 브라우저에서 자동으로 캐시됩니다. |
브라우저에서 캐시되지 않음 |
사용 상황 | 데이터 조회 사용자가 입력한 정보가 공개되어도 괜찮습니다. |
데이터 추가, 변경, 삭제 사용자가 입력한 정보가 공개되지 않은 경우(로그인 등) |
GET 메소드는 URL 뒤에 매개변수를 추가하여 데이터를 전달합니다.
이 방법은 간단하고 직관적이지만 URL에 데이터가 노출되므로 보안이 낮아집니다.
또한 URL 길이에 제한이 있으므로 일반적으로 2,048자 이하의 데이터를 전달하는 데 사용됩니다.
GET 방식과 POST 방식의 쿼리 문자열 차이
먼저 GET 방식으로 요청을 보낼 때 URL에 요청하는 데이터가 쿼리 문자열 형식으로 포함됩니다.
이때 쿼리 문자열은 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 형식으로 표현됩니다.
위의 코드는 사용자가 입력한 쿼리를 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://www.geeksforgeeks.org/difference-between-http-get-and-post-methods/