웹 애플리케이션에서 클라이언트의 요청(Request)을 서버가 어떻게 받는지는
가장 기본이면서도 중요한 개념이다.
서블릿(Servlet)에서는 이 요청 정보를
HttpServletRequest 객체를 통해 처리한다.
HttpServletRequest는 클라이언트가 서버로 보낸 HTTP 요청 정보를 담고 있는 객체이다.
이 객체를 통해 다음과 같은 정보를 읽을 수 있다.
즉, 사용자가 서버로 보낸 모든 정보의 집합이다.
(Spring에서는 이 객체를 추상화해 더 편하게 사용할 수 있다.)
서블릿(또는 Spring MVC)에서 요청 데이터를 받는 방식은
크게 3가지로 나눌 수 있다.
application/x-www-form-urlencoded/login?username=kim&age=25
쿼리 파라미터에 정보를 전달하는 부분이다.
``` java
String username = request.getParameter("username");
String age = request.getParameter("age");
복수 파라미터
String[] hobbies = request.getParameterValues("hobby");
특징
• 항상 String 타입으로 전달됨
• 단순 데이터 처리에 적합
• HTML form 전송 방식
② HTTP 메시지 바디(JSON)
REST API에서 가장 많이 사용하는 방식이다.
요청예시
{
"name": "jeongbeom",
"age": 25
}
서버 처리 코드
ObjectMapper objectMapper = new ObjectMapper();
UserDto user = objectMapper.readValue(
request.getInputStream(),
UserDto.class
);
특징
• 객체 단위로 데이터 처리 가능
• 타입 안정성 확보
• RESTful API에 적합
③ Path Variable (경로 변수)
URL 경로 자체에 값을 포함하는 방식이다.
GET /users/10
@GetMapping("/users/{id}")
public String find(@PathVariable Long id) {
return "id = " + id;
}
특징
• 리소스 식별에 적합
• URL 의미가 명확
• REST API 설계에 필수
| 방식 | 예시 | 사용 방법 |
|---|---|---|
| HTTP 파라미터 | ?name=kim | request.getParameter() |
| JSON 바디 | { "name": "kim" } | ObjectMapper.readValue() |
| Path Variable | /users/10 | @PathVariable |
| 객체 | 역할 |
|---|---|
| HttpServletRequest | 클라이언트 요청 읽기 |
| HttpServletResponse | 클라이언트 응답 보내기 |
요청 데이터는 무조건
request에서 읽는다
HttpServletRequest 객체를 통해 처리한다ObjectMapper.readValue()를 사용해 객체로 변환한다