스프링 MVC에서 HTTP 요청과 헤더 조회 관련 애노테이션 및 기능에 대한 정리
@Slf4j
@RestController
public class RequestHeaderController {
@RequestMapping("/headers")
public String headers(
HttpServletRequest request, // 서블릿 표준 HttpServletRequest 객체
HttpServletResponse response, // 서블릿 표준 HttpServletResponse 객체
HttpMethod httpMethod, // HTTP 메서드(GET, POST 등) - org.springframework.http.HttpMethod
Locale locale, // Locale 정보 (언어, 국가)
@RequestHeader MultiValueMap<String, String> headerMap, // 모든 HTTP 헤더를 MultiValueMap으로 조회
@RequestHeader("host") String host, // 특정 HTTP 헤더(host) 조회
@CookieValue(value = "myCookie", required = false) String cookie // 특정 쿠키 조회, 없으면 null
)
{
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 | 서블릿 표준 요청 객체, HTTP 요청 정보 직접 접근 가능 |
HttpServletResponse | 서블릿 표준 응답 객체, HTTP 응답 조작 가능 |
HttpMethod (org.springframework.http.HttpMethod) | HTTP 메서드(GET, POST, PUT 등)를 enum 형태로 조회 가능 |
Locale | 요청의 로케일 정보 (언어, 국가 등) |
@RequestHeader MultiValueMap<String, String> headerMap | 모든 HTTP 헤더를 키-값 리스트 형태로 한 번에 조회 가능 |
@RequestHeader("host") String host | 특정 HTTP 헤더 하나만 조회 (host 헤더) |
@RequestHeader(value="name", required=false, defaultValue="") | 특정 헤더 조회, 필수 여부와 기본값 설정 가능 |
@CookieValue(value="myCookie", required=false) | 특정 쿠키 값을 조회, 필수 여부와 기본값 설정 가능 |
MultiValueMap 사용법MultiValueMap은 하나의 키에 여러 값을 가질 수 있는 Map 인터페이스MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("keyA", "value1");
map.add("keyA", "value2");
List<String> values = map.get("keyA"); // [value1, value2]
@Slf4j 애노테이션@Slf4j는 자동으로 다음과 같은 로거 필드를 생성해줌private static final org.slf4j.Logger log =
org.slf4j.LoggerFactory.getLogger(RequestHeaderController.class);
log.info(), log.debug() 등 로그 출력 가능@RequestHeader 주요 속성| 속성명 | 설명 |
|---|---|
value 또는 name | 조회할 HTTP 헤더 이름 |
required | 필수 여부 (기본값: true) |
defaultValue | 헤더가 없을 경우 기본값 지정, 지정 시 required는 무시됨 |
예)
@RequestHeader(value = "User-Agent", required = false, defaultValue = "unknown")
String userAgent
@CookieValue 주요 속성| 속성명 | 설명 |
|---|---|
value 또는 name | 조회할 쿠키 이름 |
required | 필수 여부 (기본값: true) |
defaultValue | 쿠키가 없을 경우 기본값 지정, 지정 시 required는 무시됨 |
컨트롤러 메서드에서 사용할 수 있는 파라미터 목록
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-annarguments
컨트롤러 메서드에서 사용할 수 있는 반환 타입 목록
https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-annreturn-types
!