본문 바로가기
Spring Tutorial

[스프링MVC 기본 기능 3] HTTP 요청 - 헤더 조회

by 미소5 2023. 8. 21.

[스프링MVC 35] 스프링 MVC 기본 기능: 요청 매핑 - API 예시 (tistory.com)

 

[스프링MVC 35] 스프링 MVC 기본 기능: 요청 매핑 - API 예시

[스프링MVC 34] 스프링 MVC 기본 기능: 요청 매핑 (tistory.com) [스프링MVC 34] 스프링 MVC 기본 기능: 요청 매핑 [스프링MVC 33] 로그에 대해서 간단히 알아보자 (tistory.com) [스프링MVC 33] 로그에 대해서 간단

joly156.tistory.com

매핑 방법을 이해했으니, HTTP 요청이 보내는 데이터들을 스프링 MVC로 어떻게 조회하는지 알아보자.

 


애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.

먼저, HTTP 헤더 정보를 조회하는 방법을 알아보자.

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 javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;

@Slf4j
@RestController
public class RequestHeaderController {

    @RequestMapping("/headers")
    public String headers(HttpServletRequest request,
                          HttpServletResponse response,
                          HttpMethod httpMethod,    //HTTP 메서드를 조회
                          Locale locale,            // Locale 정보를 조회
                          @RequestHeader MultiValueMap<String, String> headerMap,   //모든 HTTP 헤더를 MultiValueMap 형식으로 조회
                          @RequestHeader("host") String host,   //특정 HTTP 헤더를 조회
                          @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";
    }

}
  • @RequestHeader MultiValueMap<String, String> headerMap
    • 모든 HTTP 헤더를 MultiValueMap 형식으로 조회한다.
  • @RequestHeader("헤더이름") String host
    • 특정 HTTP 헤더를(1개) 조회한다.
    • 속성
      • 필수 값 여부: required
      • 기본 값 속성: defaultValue

 

  • @CookieValue(value = "myCookie", required = false) String cookie
    • 특정 쿠키를 조회한다.
    • 속성
      • 필수 값 여부: required
      • 기본 값: defaultValue

 


실행

 


  • MultiValueMap
    • HTTP header, HTTP 쿼리 파라미터와 같이 하나의 키에 여러 값을 받을 때 사용한다.

 

  • 예시
    • keyA=value1&keyA=value2
MultiValueMap<String, String> map = new LinkedMultiValueMap();
map.add("keyA", "value1");
map.add("keyA", "value2");

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

 


[스프링 MVC 9] 서블릿: HttpServletRequest 기본 사용법 (tistory.com)

 

[스프링 MVC 9] 서블릿: HttpServletRequest 기본 사용법

HttpServletRequest가 제공하는 편리한 기본 기능들(HTTP 메시지의 start-line, header 정보 조회)을 알아보자. start-line 정보 @WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header") public class RequestHeaderServl

joly156.tistory.com


[스프링MVC 30] 스프링 MVC: 시작 (tistory.com)

 

[스프링MVC 30] 스프링 MVC: 시작

스프링이 제공하는 컨트롤러는 애노테이션 기반으로 동작해서, 매우 유연하고 실용적이다. 스프링이 제공하는, 애노테이션을 활용한 매우 유연하고 실용적인 컨트롤러가 바로 @RequestMapping을 사

joly156.tistory.com

 

[스프링MVC 33] 로그에 대해서 간단히 알아보자 (tistory.com)

 

[스프링MVC 33] 로그에 대해서 간단히 알아보자

운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 직접 출력하지 않고, 별도의 로깅 라이브러리를 사용해서 로그를 출력한다. 로그를 사용할 수 있게끔, 사용 방법

joly156.tistory.com

 

[스프링MVC 34] 스프링 MVC 기본 기능: 요청 매핑 (tistory.com)

 

[스프링MVC 34] 스프링 MVC 기본 기능: 요청 매핑

[스프링MVC 33] 로그에 대해서 간단히 알아보자 (tistory.com) [스프링MVC 33] 로그에 대해서 간단히 알아보자 운영 시스템에서는 System.out.println() 같은 시스템 콘솔을 사용해서 필요한 정보를 직접 출력

joly156.tistory.com

 

728x90
반응형