본문 바로가기

Spring

[Spring] HTTP 요청 데이터 (GET, POST-HTML Form, HTTP message body)

반응형

Http 요청 데이터

HTTP 요청 데이터


HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알아보자.


주로 다음 3가지 방법을 사용한다. 


1. GET - 쿼리 파라미터
예시 : /url?username=hello&age=20    (username은 key값, hello는 value값 - key=value 형식으로 입력)
메시지 바디 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
예) 검색, 필터, 페이징등에서 많이 사용하는 방식

 

2. POST - HTML Form
content-type: application/x-www-form-urlencoded
메시지 바디에 쿼리 파리미터 형식으로 전달 username=hello&age=20
예) 회원 가입, 상품 주문, HTML Form 사용


3. HTTP message body에 데이터를 직접 담아서 요청
HTTP API에서 주로 사용, JSON, XML, TEXT
데이터 형식은 주로 JSON 사용
POST, PUT, PATCH

 

서블릿 그리고 HTTP 요청까지 흐름

1. 클라이언트(웹 브라우저)가 서버에 HTTP 요청을 보낸다. 이 요청은 특정 URL을 통해 전달된다.

 

​2. 서블릿 컨테이너(예: Apache Tomcat)는 해당 URL에 매핑된 서블릿을 찾는다. 이를 위해 서블릿 매핑 설정 또는 어노테이션을 확인한다.

3. 서블릿 컨테이너는 요청에 대한 새로운 스레드를 생성하고, 해당 서블릿의 인스턴스를 생성한다. 

 

4. 서블릿의 init() 메서드가 호출된다.


5. 서블릿의 service() 메서드가 호출된다. 이 메서드는 클라이언트의 요청을 처리한다. service() 메서드는 HTTP 요청 메서드(GET, POST, PUT, DELETE 등)에 따라 적절한 메서드(doGet(), doPost(), doPut(), doDelete() 등)를 호출한다.


6. doGet() 또는 doPost() 메서드가 호출된다. 이 메서드에서는 클라이언트의 요청을 처리하고, 필요에 따라 데이터베이스 조회, 비즈니스 로직 실행, HTTP 응답 생성 등의 작업을 수행한다.


7. 서블릿은 HTTP 응답을 생성하고 클라이언트에게 전송한다. 이 응답에는 상태 코드, 헤더, 본문 데이터 등이 포함된다.

8. 서블릿의 service() 메서드가 종료된다.

검색은 Get 방식이다

 

 

구글 검색창에 '구글'을 검색하면 url이 이렇게 나온다. 이것은 GET 방식이다. 

https://www.google.com/search?q=%EA%B5%AC%EA%B8%80&hl=en&sxsrf=AB5stBid3CA3KUcRkQRkiI5ZSnoEFHwGrQ%3A1689481493321&source=hp&ei=FXGzZIayEdfk1e8Ppse1wAw&iflsig=AD69kcEAAAAAZLN_Jcpiz3Je42SiYTWPFIXVeEE3dZAl&ved=0ahUKEwjGkIyCsZKAAxVXcvUHHaZjDcgQ4dUDCAk&uact=5&oq=%EA%B5%AC%EA%B8%80&gs_lp=Egdnd3Mtd2l6IgbqtazquIAyERAuGIAEGLEDGIMBGMcBGNEDMgsQABiABBixAxiDATILEAAYgAQYsQMYgwEyCxAAGIAEGLEDGIMBMgsQABiABBixAxiDATIIEAAYgAQYsQMyCBAAGIAEGLEDMgsQABiABBixAxiDATIIEAAYgAQYsQMyCxAAGIAEGLEDGIMBSLSGEVCMNFiXZHAGeACQAQGYAYkBoAH6CKoBBDAuMTC4AQPIAQD4AQGoAgHCAgYQswEYhQTCAggQLhiABBixA8ICBRAAGIAEwgIEEAAYA8ICDhAuGIAEGLEDGMcBGNEDwgILEC4YgAQYsQMYgwE&sclient=gws-wiz

 

GET 방식은 URL에 데이터를 쿼리 매개변수(query parameter)로 포함하여 서버로 전달하는 방식이다. URL의 쿼리 문자열은 "?"로 시작하며, "key=value" 형식으로 매개변수를 전달한다. 각 매개변수는 "&"로 구분된다.

 

쿼리 매개변수인 "q"는 구글 검색 페이지에서 검색어를 나타낸다. "%EA%B5%AC%EA%B8%80"는 URL 인코딩된 형식으로 "구글"을 뜻한다. URL 인코딩은 URL에서 사용할 수 없는 문자를 특수한 형식으로 변환하는 과정이다. 이렇게 인코딩 된 문자열은 서버에서 정상적으로 해석될 수 있다.

GET 방식은 주로 데이터를 검색하거나 조회할 때 사용된다. 데이터가 URL에 포함되므로 요청이 브라우저 주소창에 표시되거나, 북마크로 저장하거나, 다른 사람에게 공유하기 쉽다. 또한, 브라우저에서 캐시(cache)에 의해 저장되어 같은 요청을 반복할 때 서버에 재요청하지 않아도 된다.

 

 

반응형