Post

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방식의 특징

  1. 데이터 전송 방식
    GET방식은 URL의 끝에 쿼리 스트링을 붙여 데이터를 전송합니다. 예를 들어, http://example.com/search?query=example와 같은 형태입니다.
    URL에 직접 데이터를 포함하기 때문에 전송할 수 있는 데이터의 양이 URL 길이 제한에 따라 제한되며, 길이는 일반적으로 약 2048자 정도입니다.
  2. 보안성
    GET방식은 보안이 상대적으로 낮습니다. 앞서 언급했듯 URL에 데이터가 포함되기 때문에 민감한 정보일수록 GET방식에 포함해서는 안 됩니다.
    (URL은 브라우저의 기록에 저장되거나, 로그 파일에 남을 수 있습니다.)
  3. 캐싱
    GET방식은 브라우저 캐싱이 가능합니다. 즉, 동일한 서버가 아닌 브라우저 캐시에서도 응답을 가져올 수 있어 네트워크 자원을 절약할 수 있습니다.
  4. 아이디엄포턴스(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방식의 특징

  1. 데이터 전송 방식
    POST방식은 데이터가 본문에 포함되므로 GET방식에 비해 데이터 양의 제한이 없습니다. 따라서 큰 데이터나 복잡한 데이터를 전송할 때 유리합니다.
  2. 보안성
    POST방식은 URL이 아닌 본문에 데이터를 포함하므로, GET방식보다 상대적으로 보안성이 높습니다.
    하지만 아무리 보안이 낫다고 해도 완벽한 보안은 아니기 때문에 네트워크를 통해 전송되는 데이터는 HTTPS를 사용하여 암호화하는 것이 좋습니다.
  3. 캐싱
    POST방식은 기본적으로 캐싱되지 않습니다. 즉, 서버에 동일한 요청이 반복되더라도 매번 새로운 작업으로 처리된다는 뜻입니다.
  4. 아이디엄포턴스(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.