GET & POST 방식
▶ 웹 개발에서 클라이언트와 서버 간의 데이터 전송은 HTTP 프로토콜을 통해 이루어집니다. HTTP에는 여러 가지 메서드가 있으며, 그 중에서도 가장 흔히 사용되는 두 가지가 GET과 POST입니다. 이 두 가지 메서드는 모두 서버로 데이터를 전송하지만, 그 방식과 사용되는 목적에는 큰 차이가 있는데요, 오늘은 이 두가지에 대해 한번 알아볼까합니다.
1. GET방식
▶ GET 메서드는 서버로부터 정보를 요청할 때 사용됩니다.
주로 웹 페이지를 요청하거나, 서버에 저장된 데이터를 가져올 때 사용되며 GET 요청을 사용하면 데이터의 정보를 URL의 쿼리 스트링(query string)에 포함하여 전송합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<body>
<h2>GET 요청 예시</h2>
<form action="/submit" method="get">
이름: <input type="text" name="name"><br>
나이: <input type="text" name="age"><br>
<input type="submit" value="제출">
</form>
</body>
</html>
- 위의 예시는 GET방식을 사용한 HTML 폼으로, 사용자가 이름과 나이를 입력하고 제출하면 /submit?name=입력값&age=입력값 형태로 데이터가 전송됩니다.
GET방식의 특징
- 데이터 전송 방식
- GET방식은 URL의 끝에 쿼리 스트링을 붙여 데이터를 전송합니다. 예를 들어, http://example.com/search?query=example와 같은 형태입니다.
URL에 직접 데이터를 포함하기 때문에 전송할 수 있는 데이터의 양이 URL 길이 제한에 따라 제한되며, 길이는 일반적으로 약 2048자 정도입니다.
- 보안성
- GET방식은 보안이 상대적으로 낮습니다. 앞서 언급했듯 URL에 데이터가 포함되기 때문에 민감한 정보일수록 GET방식에 포함해서는 안 됩니다.
(URL은 브라우저의 기록에 저장되거나, 로그 파일에 남을 수 있습니다.)
- 캐싱
- GET방식은 브라우저 캐싱이 가능합니다. 즉, 동일한 서버가 아닌 브라우저 캐시에서도 응답을 가져올 수 있어 네트워크 자원을 절약할 수 있습니다.
- 아이디엄포턴스(Idempotence)
- GET방식은 동일한 방식을 여러 번 반복해도 서버의 상태를 변경하지 않아 안전하게 여러 번 사용할 수 있습니다.
2. POST방식
▶ POST 메서드는 서버로 데이터를 전송할 때 사용됩니다.
주로 폼 제출이나 파일 업로드, 데이터베이스에 데이터를 저장할 때 사용되며 POST방식을 사용할 경우 데이터가 요청 본문(body)에 포함되어 전송됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
<!DOCTYPE html>
<html>
<body>
<h2>POST 요청 예시</h2>
<form action="/submit" method="post">
이름: <input type="text" name="name"><br>
나이: <input type="text" name="age"><br>
<input type="submit" value="제출">
</form>
</body>
</html>
- 위의 예시는 POST방식을 사용한 HTML 폼으로, 사용자가 이름과 나이를 입력하고 제출하면 데이터는 요청 본문에 포함되어 /submit URL 형태로 데이터가 전송됩니다.
POST방식의 특징
- 데이터 전송 방식
- POST방식은 데이터가 본문에 포함되므로 GET방식에 비해 데이터 양의 제한이 없습니다. 따라서 큰 데이터나 복잡한 데이터를 전송할 때 유리합니다.
- 보안성
- POST방식은 URL이 아닌 본문에 데이터를 포함하므로, GET방식보다 상대적으로 보안성이 높습니다.
하지만 아무리 보안이 낫다고 해도 완벽한 보안은 아니기 때문에 네트워크를 통해 전송되는 데이터는 HTTPS를 사용하여 암호화하는 것이 좋습니다.
- 캐싱
- POST방식은 기본적으로 캐싱되지 않습니다. 즉, 서버에 동일한 요청이 반복되더라도 매번 새로운 작업으로 처리된다는 뜻입니다.
- 아이디엄포턴스(Idempotence)
- POST방식은 동일한 요청을 여러 번 반복하면 서버의 상태가 변경될 수 있습니다. 예를 들어, 동일한 폼을 여러 번 제출하면 데이터베이스에 동일한 데이터가 여러 번 삽입될 수 있습니다.
3. GET과 POST의 사용 사례 비교
(1) 로그인 폼
- GET: 로그인 폼에서는 GET방식을 사용하지 않습니다. 이유는 보안상 민감한 정보(예: 비밀번호)를 URL에 포함해서는 안 되기 때문입니다.
- POST: 로그인 폼에서는 POST방식을 사용하여 사용자의 아이디와 비밀번호를 안전하게 서버로 전송합니다.
(2) 검색 기능
- GET: 검색 기능에서는 GET방식을 사용하여 사용자가 입력한 검색어를 URL의 쿼리 스트링에 포함하여 서버로 전송합니다. 이렇게 하면 검색 결과 페이지를 북마크하거나 공유할 수 있습니다.
- POST: 검색 기능에서는 POST방식을 사용하지 않는 것이 일반적입니다. 데이터의 양이 많지 않고 캐싱 및 북마크 기능을 활용할 수 있는 GET 방식이 더 적합합니다.
(3) 파일 업로드
- GET: 파일 업로드는 GET방식으로 처리할 수 없습니다. URL에 파일 데이터를 포함할 수 없기 때문입니다.
- POST: 파일 업로드는 POST방식을 사용하여 파일 데이터를 본문에 포함시켜 서버로 전송합니다.
이렇게 오늘은 GET과 POST방식에 대해 알아봤는데요,
면접에서도 충분히 나올 수 있는 질문인만큼 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!
This post is licensed under CC BY 4.0 by the author.