6-3. HTTP 요청 - 기본, 헤더 조회

shin·2025년 8월 11일

Spring MVC

목록 보기
25/25

스프링 MVC에서 HTTP 요청과 헤더 조회 관련 애노테이션 및 기능에 대한 정리

  • 스프링 MVC는 애노테이션 기반으로 HTTP 요청의 다양한 정보를 편리하게 받을 수 있도록 지원함
  • 특히 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 인터페이스
  • HTTP 헤더, 쿼리 파라미터 중 같은 이름이 여러 번 반복될 때 유용함
MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
map.add("keyA", "value1");
map.add("keyA", "value2");

List<String> values = map.get("keyA"); // [value1, value2]


@Slf4j 애노테이션


  • 롬복(Lombok)의 @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는 무시됨


참고 - 스프링 공식 문서


profile
Backend development

0개의 댓글