백엔드/Django

[Django] GET, POST는 어떻게 구분되어 요청되는 것일까?

Shong Studio 2024. 8. 11. 15:49
728x90
반응형

웹 애플리케이션에서 GET 요청과 POST 요청의 차이는 요청의 목적과 데이터 전송 방식에 의해 결정됩니다.

사용자가 URL을 입력하거나 링크를 클릭하는 것과 웹 폼을 제출하는 것은 서로 다른 행동이지만, 그 차이는 주로 브라우저와 서버 간의 HTTP 요청 방식에 의해 구분됩니다.

1. GET 요청:

  • 사용자 행동: 사용자가 브라우저의 주소창에 URL을 입력하거나, 페이지 내의 링크를 클릭합니다.
  • 특징:
    • 데이터 전송: GET 요청은 URL에 데이터를 쿼리 스트링(예: ?key1=value1&key2=value2) 형태로 포함하여 서버로 보냅니다.
    • 목적: 주로 서버로부터 데이터를 가져오기 위한 요청입니다. 예를 들어, 특정 페이지를 로드하거나, 데이터를 조회하는 작업에 사용됩니다.
    • 데이터 크기: URL 길이 제한이 있기 때문에 전송할 수 있는 데이터의 양이 제한적입니다.
    • 아이덴티티: URL 자체가 요청의 내용을 표현하기 때문에 사용자가 URL을 입력하거나 링크를 클릭할 때 GET 요청이 발생합니다.

2. POST 요청:

  • 사용자 행동: 사용자가 웹 페이지에서 폼을 작성하고, 이를 제출(submit)합니다.
  • 특징:
    • 데이터 전송: POST 요청은 데이터를 HTTP 요청의 본문(body)에 포함시켜 서버로 보냅니다. 이 데이터는 일반적으로 폼에서 입력한 정보입니다.
    • 목적: 서버에 데이터를 전송하여 새로운 데이터를 생성하거나, 기존 데이터를 수정하는 등의 작업을 수행할 때 사용됩니다.
    • 데이터 크기: 본문에 데이터를 담기 때문에 GET 요청보다 많은 양의 데이터를 전송할 수 있습니다.
    • 아이덴티티: 일반적으로 폼 제출 버튼을 누르면 POST 요청이 발생합니다.

웹 폼과 URL 링크의 차이점

  1. URL 링크:

    • HTML에서 <a href="..."> 태그를 통해 정의된 링크를 클릭하면 브라우저는 기본적으로 GET 요청을 보냅니다.
    • 이 링크는 사용자가 특정 페이지로 이동하거나, 특정 리소스를 요청할 때 사용됩니다.
    • 링크 클릭은 데이터를 전송하기보다는 특정 페이지나 리소스를 가져오는 데 주로 사용됩니다.
  2. 웹 폼:

    • HTML에서 <form> 태그를 통해 정의된 폼은 method 속성에 따라 GET 또는 POST 요청을 보낼 수 있습니다.
    • 폼의 method 속성:
      • method="GET": 폼 데이터가 URL의 쿼리 스트링으로 전송됩니다. 이 경우 브라우저는 GET 요청을 보냅니다.
      • method="POST": 폼 데이터가 HTTP 요청 본문에 포함되어 전송됩니다. 이 경우 브라우저는 POST 요청을 보냅니다.
    • 폼은 데이터를 서버로 전송하기 위한 용도로 주로 사용됩니다.

폼 제출과 URL 클릭의 관계

사용자가 URL을 클릭했을 때도 특정 목적으로 서버에 데이터를 전송할 수 있지만, 이때 전송되는 방식에 따라 GET 또는 POST 요청이 결정됩니다:

  • 링크 클릭 + 데이터 전송: 사용자가 링크를 클릭하여 데이터 전송이 필요한 경우, 일반적으로 GET 요청을 사용하고 URL에 쿼리 스트링을 포함합니다.
  • 폼 제출: 사용자가 폼을 제출할 때, method="POST"로 지정되었다면 POST 요청이 발생하고, 데이터는 HTTP 본문에 담겨 전송됩니다.

따라서, 사용자가 URL을 클릭한 것인지, 폼을 제출한 것인지는 HTML 요소(<a> 또는 <form>)와 그 설정(method="GET" 또는 method="POST")에 의해 구분됩니다.
이는 브라우저가 HTML 문서를 해석하고, 그에 따라 적절한 HTTP 요청을 자동으로 생성하는 방식입니다.

728x90
반응형