HTTP 요청 - 기본, 헤더 조회
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpMethod;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Locale;
@Slf4j
@RestController
public class RequestHeaderController {
@RequestMapping("/headers")
public String header(HttpServletRequest request,
HttpServletResponse response,
HttpMethod httpMethod,
Locale locale,
@RequestHeader MultiValueMap<String, String> headerMap,
@RequestHeader("host") String host,
@CookieValue(value = "myCookie", required = false) String cookie
) {
log.info("request={}", request);
log.info("response={}", response);
log.info("httpMethod={}", httpMethod);
log.info("locale={}", locale);
log.info("headerMap={}", headerMap);
log.info("header host={}", host);
log.info("myCookie={}", cookie);
return "ok";
}
}
HttpServletRequest
HttpServletRequest는 클라이언트에서 서버로 전송된 HTTP 요청에 대한 정보를 담고 있는 객체이며
HttpServletRequest는 HTTP 요청 메서드, 헤더, 쿠키, 파라미터 등의 정보를 제공한다.
HttpServletRequest를 사용하여 클라이언트의 요청에 대한 정보를 가져와서 이를 기반으로 로직을 처리할 수 있다.
HttpServletResponse
HttpServletResponse는 서버에서 클라이언트로 전송하는 HTTP 응답에 대한 정보를 담고 있는 객체이다. HttpServletResponse는 HTTP 응답 코드, 헤더, 쿠키, 본문 등의 정보를 제공하며
HttpServletResponse를 사용하여 서버의 응답을 클라이언트에게 전송할 수 있다.
HttpMethod
HttpMethod는 HTTP 메서드를 조회하기 위한 열거형 상수이다.
HttpMethod는 GET, POST, PUT, DELETE 등의 HTTP 메서드를 제공한다.
스프링에서는 HttpMethod를 사용하여 요청 메서드에 대한 검증을 수행하거나, 특정 HTTP 메서드에 대한 핸들러 매핑을 지정할 수 있다.
Locale
Locale은 지역화 정보를 조회하기 위한 클래스이다.
Locale은 언어, 국가 등 지역화 정보를 제공하며, 스프링에서는 LocaleResolver를 사용하여 클라이언트의 Locale 정보를 추출하거나, 서버에서 사용할 Locale 정보를 설정할 수 있다.
@RequestHeader
@RequestHeader는 HTTP 헤더를 조회하기 위한 어노테이션이다.
MultiValueMap 형식으로 모든 HTTP 헤더를 조회할 수 있으며, 특정 HTTP 헤더의 값을 조회할 수도 있다.
속성 필수 값 여부: required 기본 값 속성: defaultValue
@CookieValue
@CookieValue는 쿠키를 조회하기 위한 어노테이션이다.
특정 쿠키의 값을 조회할 수 있으며, 필수 값 여부와 기본 값 속성을 설정할 수 있다.
속성 필수 값 여부: required 기본 값 속성: defaultValue
MultiValueMap
MultiValueMap은 Map과 유사하지만, 하나의 키에 여러 값을 저장할 수 있다.
이는 HTTP header, HTTP 쿼리 파라미터 등과 같이 하나의 키에 여러 값을 받을 때 사용된다.
MultiValueMap<String, String> map = new LinkedMultiValueMap();
map.add("keyA", "value1");
map.add("keyA", "value2");
위의 코드에서 map.add("keyA", "value1")와 map.add("keyA", "value2")를 사용하여 하나의 키(keyA)에 여러 값을 저장할 수 있다.
map.get("keyA")를 사용하여 keyA라는 키의 값을 조회하면, 다음과 같은 결과가 반환된다.
[value1, value2]
@Slf4j
다음 코드를 자동으로 생성해서 로그를 선언해준다. 개발자는 편리하게 log 라고 사용하면 된다.
private static final org.slf4j.Logger log =
org.slf4j.LoggerFactory.getLogger(RequestHeaderController.class);
출처 : 인프런 - 스프링 MVC 1편 by 우아한형제 김영한이사님
'Spring > Spirng MVC - 기본기능' 카테고리의 다른 글
| 스프링 - HTTP 요청 파라미터 - @ModelAttribute (0) | 2023.03.28 |
|---|---|
| 스프링 - HTTP 요청 파라미터 - @RequestParam (0) | 2023.03.28 |
| 스프링MVC - HTTP 요청 데이터 조회 (0) | 2023.03.28 |
| 스프링MVC - 요청 매핑(@RequestMapping) (0) | 2023.03.27 |
| 스프링 로깅(logging) (0) | 2023.03.27 |