JAVA/공부

GET 방식과 POST 방식

GaeGim 2022. 9. 4. 21:23
반응형

HTTP 프로토콜이 제공하는 7개의 메서드 중 웹 서비스 개발 시에 주로 사용하는 GET 메서드와 POST 메서드.

 

 

 

  • 요청과 응답

사용자가 URL을 브라우저 주소창에 작성하고 엔터를 누르면 해당 웹페이지로 이동한다. 사용자에게 웹페이지를 보여주는 내부 처리에서, 클라이언트 컴퓨터가 서버 컴퓨텅[ 웹페이지를 보여달라고 하는 것을 요청이라고 하고, 서버 컴퓨터가 요청한 클라이언트 컴퓨터에게 웹페이지 내용을 표현하기 위해 HTML 문서로 보내는 것을 응답이라고 한다.

 

 

 

  • HTTP 패킷

클라이언트가 서버로 요청을 보낼 때, 보내는 데이터를 HTTP 패킷이라고 한다.

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

 

구조는 헤더와 바디로 구성된다.

 

· 헤더 : HTTP 프로토콜이 제공하는 7개의 메서드 중 어떤 것을 쓰는지, 클라이언트·브라우저·URL 정보 등을 담는다.

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

 

이런 웹 개념을 이용해 GET/POST 메서드로 통신 요청할 수 있다.

 

 

 

 

  • GET/POST 방식

두 방식은 모두 서버에 요청을 하는 기능이 있다.

 

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

예를 들면 로그인 창에서 어이디와 비밀번호를 입력할 때, 입력한 데이터를 서버에 요청해 정보가 올바른지 검사해야 한다.

 

 

· GET 방식

클라이언트가 작성한 데이터를 URL 뒤에 붙여서 보낸다.

 

www.practice.xom?id=abc123&passwords=0070

 

데이터는 key와 value 쌍으로 입력해야 하고 데이터가 보이는 방식이다.

URL 뒤에 "?"를 붙여 URL의 끝을 알리고 데이터 표현의 시작점을 알린다.

또 위의 예시에선 id, password가 key고, abc123, 0070이 value이고 id와 password를 &로 구분하고 있다.

 

데이터를 URL 뒤에 붙여 HTTP 패킷의 헤더에 포함되어 서버에 요청되기 때문에 바디는 빈 상태로 보내진다. 따라서 헤더에 바디 데이터를 설명하는 Content-Type이라는 헤더 필드는 미포함된다.

 

URL 형태로 표현되어 특정 웹페이지에 다른 컴퓨터가 접속하게 할 수 있고

간단한 데이터 정도만 넣을 수 있어 데이터를 보낼 수 있는 양이 한정적이다.

 

 

검색창에서 쓰면 적합할 것이다.

https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=1&ie=utf8&query=고양이

네이버 검색창에 고양이를 입력했을 때다.

로그인 때와는 달리 입력한 데이터가 민감하지 않고, 오히려 보여주는 게 도움이 될 수 있다.

 

 

 

 

 

· POST  방식

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

GET 방식은 URL에 데이터를 붙여 데이터가 보이지만 POST 방식은 URL에 붙여 보내지 않고 바디에 데이터를 넣어 보내기 때문에 입력 데이터가 보이지 않는다.

 

따라서 헤더 필드 중 Content-Type이 들어가서 어떤 데이터 타입인지 명시한다.

Content-Type에 여러 타입이 있는데, 몇 가지만 들겠다.

1. application/x-www-form-urlencoded : GET 방식과 마찬가지로, key-value쌍으로 데이터를 넣고 구분자 &을 사용.
2. text/plain : 바디에 단순 txt를 넣는다.
3. multipart/form-app : 파일 전송 시 많이 사용됨. 바디에 바이너리 데이터를 넣는다는걸 알려줌.

POST 방식으로 데이터를 보낼 때는 위와 같은 타입을 반드시 명시해야 한다.

명시하지 않으면 1번으로 셋팅된다.

 

로그인창 같은, 입력 데이터가 보이면 안되는 곳에서 사용하는 게 적합하다.

반응형

'JAVA > 공부' 카테고리의 다른 글

자바 스크립트 계산기 만들기  (2) 2022.09.13
절대 경로와 상대 경로  (0) 2022.09.04
쿠키와 세션(+캐시)  (0) 2022.09.03
OSI 7계층  (0) 2022.09.02
자바 Adapter 클래스  (0) 2022.09.01