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)에 의해 저장되어 같은 요청을 반복할 때 서버에 재요청하지 않아도 된다.
'Spring' 카테고리의 다른 글
[Spring] 게시판 검색창 입력 후 페이징 처리시 유지 안되는 경우 해결방법(session 사용) (0) | 2023.08.28 |
---|---|
[Spring] GET 쿼리 파라미터 조회하기 (0) | 2023.07.19 |
[Spring] HttpServletRequest의 기본 기능 header, start-line 정보 조회하기 (0) | 2023.07.12 |
[Spring] HttpServletRequest란 무엇인가? (2) | 2023.07.12 |
IntelliJ 무료버전인 경우 War파일 Gradle 설정 (1) | 2023.07.08 |