본문 바로가기
Web과 프로그래밍 언어

[WEB] GET방식 & POST 방식

by cosmicgy 2023. 3. 3.

1. GET method? & POST method?

Http 프로토콜이 제공해주는 7가지 메소드들 중 웹서비스 개발에 주로 사용되는 메소드이다.

user가 URL을 브라우저 주소창에 입력하고 엔터를 누르면 URL주소에 맞는 웹페이지가 user에게 보여진다. 이때 특정 웹페이지를 user 웹브라우저에 보여주기 위해 client는 server에게 웹페이지를 보여달라고 요청을 하고 server는 client에게 응답 하게 된다. 이 두개를 합쳐 HTTP 메시지 라고 한다.

 

2. HTTP packet?

통신에서 주고 받는 데이터의 구조(데이터의 묶음 단위)이다. 주고받는 메시지, 텍스트, 데이터 등등!

HTTP 통신으로 보내는 패킷은 크게 헤더(Header)와 바디(Body)부분으로 나뉜다.

헤더는 데이터 이외에 HTTP 선두에 삽입되는 부분을 말하며,  7가지 HTTP 메서드 방식중 무엇을 썻는지 클라이언트의 정보나 브라우저 정보, 접속할 URL 등등 과 같은 클라이언트 정보를 담는다. 

바디는 보통 비어있다. 그러나 특정 데이터를 담아서 서버에게 요청을 보낼 수 있다.

 

3. GET 방식 vs. POST방식

어떤 홈페이지에서 로그인을 한다고 생각해보자. 로그인을 할 때에 user는 아이디와 패스워드를 작성한 후 그 정보를 서버에 요청하여 작성한 아이디와 패스워드가 올바른 것인지 검사를 해야한다. 이렇듯 요청을 할 때에는 어떠한 '자원' 을 함께 보내야하는 경우가 존재한다. 

 

1) GET 방식으로 데이터 보내기

서버로 전송하는 데이터를 url 뒤에 붙여서 보내는 방식이다. 

www.cosmicgy.tistory.com?id=helloworld&pass=1234 

이런식으로 url 뒤에 '?' 를 붙여 url 의 종료와 데이터 표현의 시작을 구분한다. 

데이터는 key와 value 쌍으로 넣어야한다. 위의 예시에서 key는 id와 pass 이고, value는 helloworld 와 1234 이다. 

중간에 &는 구분자로 2개이 상의 key-value 쌍 의 데이터를 전송할 때에 사용한다. 

GET방식에서는 HTTP 패킷의 헤더에 데이터가 포함되어 전송되므로 BODY는 비어있게 된다. (= content-type이라는 헤더 필드도 없다) 

하지만 간단한 데이터만을 넣을 수 있기에 전송하는 데이터 양의 한계가 존재한다.

 

2) POST 방식으로 데이터 보내기

데이터 전송을 기반으로 한 요청 메소드이다. POST방식은 BODY에 데이터를 넣어서 보낸다. 따라서 헤더 필드 중 BODY의 데이터를 설명하는 content-type 이라는 헤더 필드가 들어가며 반드시 어떤 데이터 타입인지 또한 명시해야 한다.