본문 바로가기
WEB

GET방식과 POST방식

by sangfeeeeel 2021. 7. 2.

GET 메서드와 POST 메서드란?


웹 서비스 개발에 주로 사용하는 메서드 이다.

사용자가 URL을 브라우저 주소창에 작성하고 엔터를 누르면 원하는 웹페이지가 나온다.

사용자는 웹페이지를 보기 위해 단순한 일을 한 것 이지만, 특정 웹페이지를 사용자 웹브라

우저에게 보여주기 위해서는 내부적인 처리들이 있다.

그 내부적인 처리에서, 클라이언트가 서버에게 웹페이지를 보여달라고 말하는 것을

우리는 요청이라고 부르고, 서버가 클라이언트에게 요청받은 것에 대한 대답으로,

웹페이지 내용을 표현하기 위해 html 문서로 주는 것을 응답 이라 부른다.

HTTP 패킷


클라이언트가 서버로 요청을 했을때, 보내는 데이터를 HTTP패킷이라 표현하다.

HTTP 프로토콜을 쓰므로, 앞에 HTTP가 붙고 인터넷을 통해 보내는 데이터를 패킷이라

표현하므로, HTTP패킷이라 부른다. HTTP패킷의 구조는 크게 헤더와 바디로 나누어진다.

헤더에는 7가지 HTTP 메서드 방식 중 무엇을 썻는지, 클라이언트의 정보, 브라우저 정보,

접속할 URL 등등 과 같은 클라이언트 정보를 담는다.

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

이러한 웹 개념아래, 우리는 GET메서드와 POST메서드를 통해서 요청을 할 수 있다.

GET방식 vs POST방식


두 방식 모두, 서버에 요청을 하는 메서드이다.

클라이언트가 서버에 요청을 할 때, 제공해야하는 자원이 있다고 하자.

예를 들면, 어떤 홈페이지의 로그인 페이지에서 로그인을 하는 경우이다.

아이디와 패스워드는 클라이언트가 작성한 후, 그 정볼를 서버에 요청하여 클라이언트가

작성한 아이디와 패스워드가 올바른 것인지 검사를 해야한다.

위의 예시를 보듯 요청에는 자원을 보내야 하는 경우가 존재한다.

# GET방식으로 데이터 보내기


클라이언트의 데이터를 URL뒤에 붙여서 보낸다. 위에서 쓴 예시처럼 아이디 패스워드를 보낸다고 하면,

www.example.com?id=examid&pass=1234(예시 URL)

이런식으로 보내게된다. URL뒤에 ? 마크를 통해 URL의 끝을 알리면서, 데이터 표현의 시작점을 알린다.

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

중간에 &마크는 구분자로서, 2개이상의 key, value 쌍 데이터를 보낼때는 &마크로 구분해준다.

URL에 붙이므로, HTTP패킷의 헤더에 포함되어 서버에 요청한다.

따라서, GET방식에서 BODY에 특별한 내용을 넣을것이 없으므로 BODY가 빈상태로 보내진다.

그러므로, 헤더의 내용중 BODY 데이터를 성명하는 Content-type이라는 헤더필드는 들어가지 않는다.

URL 형태로 표현되므로, 특정 페이지를 다른 사람에게 접속하게 할 수 있다.

또한 간단한 데이터를 넣도록 설계되어, 데이터를 보내는 양의 한계가 있다.

# POST방식으로 데이터 보내기


POST방식은 GET 방식과 달리, 데이터 전송을 기반으로 한 요청 메서드이다.

GET방식은 URL에 데이터를 붙여서 보내는 반면, POST방식은 URL에 붙여서 보내지 않

고 BODY에다가 데이터를 넣어서 보낸다.

따라서, 헤더필드중 BODY의 데이터를 설명하는 Content-Type이라는 헤더필드가

들어가고 어떤 데이터 타입인지 명시한다.

여러가지 Content-Type가 있지만 몇개 예를 들자면

application/JSON, text/plain, multipart/form-data

등이 있다.

따라서 POST방식으로 데이터를 보낼떄는 위와 같이 컨텐츠 타입을 꼭 명시해줘야한다.

보통 작성하지 않는 경우는 1번의 컨텐츠 타입으로 셋팅된다.

GET방식과 POST방식에 대한 상식


  • POST방식이 GET방식보다 보안측면에서 더 좋다?

POST든 GET이든 보내는 데이터는 전부 클라이언트 측에서 볼 수 있다. 단지 GET방식은

URL에 데이터가 표시되어 별다른 노력없이 볼 수 있을뿐, 두 방식 모두 보안을 생각한다면

암호화 해야한다.

  • GET방식이 POST방식보다 속도가 빠르다?

빠른건 맞다. 하지만 왜 빠른지를 알아야 하는데, 이유는 GET방식의 요청은 캐싱 때문에 빠른것이다.

'WEB' 카테고리의 다른 글

REST api 란?  (0) 2021.09.22