사용자가 URL(Uniform Resource Locator)을 브라우저 주소창에 입력하고 엔터를 누르면 페이지로 이동한다.
사용자는 단순히 URL을 입력하였을 뿐이지만 서버 내부에서는 클라이언트의 요청에 응답(웹페이지로 표현)하기 위해서 처리를 해주어야 한다.
여기서 클라이언트가 서버로 요청을 보내는 방법인 HTTP Method에는 크게 2가지 방식이 있는데, 그것이 GET방식과 POST방식이다.
HTTP(HyperText Transfer Protocol)란 하이퍼텍스트 전송 규약으로 Web-Client와 Web-Server간 데이터를 전송하는 프로토콜.
GET메소드와 POST메소드는 HTTP프로토콜에서 데이터 전송을 위해 지원하는 7가지 메소드 중 일부
HTTP통신할때 보내는 데이터는 HTTP패킷이라 하는데 해당 패킷의 구조는 크게 Header 영역과 Body영역으로 나누어 진다.
Header에는 크게 여러가지 정보와 어떠한 방식의 메소드를 사용하였는지에 대해 적게된다.
또한 어떠한 메소드 방식을 사용하였는지에 따라 Body영역의 사용 유무 및 사용 방법이 달라지게 된다.
GET방식의 특징으로는 대표적으로 URL에 Parameter를 붙여서 전송한다는 것입니다.
URL뒤에 ?를 사용하여 Parameter를 작성하게 되고 &을 붙여 여거래의 Parameter를 구분한다.
이런식으로 GET방식은 데이터를 전송하게 되며 URL에 Parameter를 전송하기 때문에 Body영역을 사용하지 않는다.
또한 URL에 데이터를 실어 보내기 때문에 대용량 데이터 전송을 하기에 제한 사항이 있다.
한번 요청시 URL포함 255자 까지 전송이 가능하며 HTTP/1.1 에서는 2048자 까지 가능
POST방식의 특징으로는 대표적으로 GET방식과는 달리 Body영역에 데이터를 실어 보낸다는 점이다.
Body에 데이터를 실어 보내기 때문에 데이터 전송양에 길이 제한이 없으며 대용량 데이터를 보내는데 적합하다.
또한 POST로 데이터를 전송할때에는 Body영역 데이터 타임을 Header Content-Type에 명시를 해줘야 한다. POST방식은 GET방식과는 달리 보내는 데이터를 URL를 통해 볼 수 없어서 보안적으로 안전하다곤 하지만 다은툴을 사용하여 POST영역의 데이터를 확인 가능하기 때문에 한심해서는 안된다.
ex)
HEADER 영역
Content-Type:applcation/json; charset=UTF-8
....
BODY영역
{
"param1":"value1",
"param2":"value2"
}
GET방식은 캐싱이 가능하고 POST방식은 캐싱이 불가능 하다.
캐싱으로 인해 한 번 접근했던 정보에대해 다시 접근할때 빠르게 가져올 수 있기 때문에 POST방식 보다는 빠르다고 한다.