백엔드/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 링크의 차이점
URL 링크:
- HTML에서
<a href="...">
태그를 통해 정의된 링크를 클릭하면 브라우저는 기본적으로GET
요청을 보냅니다. - 이 링크는 사용자가 특정 페이지로 이동하거나, 특정 리소스를 요청할 때 사용됩니다.
- 링크 클릭은 데이터를 전송하기보다는 특정 페이지나 리소스를 가져오는 데 주로 사용됩니다.
- HTML에서
웹 폼:
- HTML에서
<form>
태그를 통해 정의된 폼은method
속성에 따라GET
또는POST
요청을 보낼 수 있습니다. - 폼의
method
속성:method="GET"
: 폼 데이터가 URL의 쿼리 스트링으로 전송됩니다. 이 경우 브라우저는GET
요청을 보냅니다.method="POST"
: 폼 데이터가 HTTP 요청 본문에 포함되어 전송됩니다. 이 경우 브라우저는POST
요청을 보냅니다.
- 폼은 데이터를 서버로 전송하기 위한 용도로 주로 사용됩니다.
- HTML에서
폼 제출과 URL 클릭의 관계
사용자가 URL을 클릭했을 때도 특정 목적으로 서버에 데이터를 전송할 수 있지만, 이때 전송되는 방식에 따라 GET
또는 POST
요청이 결정됩니다:
- 링크 클릭 + 데이터 전송: 사용자가 링크를 클릭하여 데이터 전송이 필요한 경우, 일반적으로
GET
요청을 사용하고 URL에 쿼리 스트링을 포함합니다. - 폼 제출: 사용자가 폼을 제출할 때,
method="POST"
로 지정되었다면POST
요청이 발생하고, 데이터는 HTTP 본문에 담겨 전송됩니다.
따라서, 사용자가 URL을 클릭한 것인지, 폼을 제출한 것인지는 HTML 요소(<a>
또는 <form>
)와 그 설정(method="GET"
또는 method="POST"
)에 의해 구분됩니다.
이는 브라우저가 HTML 문서를 해석하고, 그에 따라 적절한 HTTP 요청을 자동으로 생성하는 방식입니다.
728x90
반응형