프레임워크(Framework)/Spring

[Spring MVC] HTTP 요청 헤더 정보 조회

잇트루 2022. 11. 14. 20:29
반응형
본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다.
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'
 

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 - 인프런 | 강의

웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다., -

www.inflearn.com

 

HTTP 요청 헤더 정보 조회

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

HTTP 요청 헤더 정보를 조회하기 위한 코드로 각 파라미터에 원하는 정보를 입력받은 뒤, @Slf4j 로깅 라이브러리를 통해 각 요청에 대한 로그를 남길 수 있다.

@Slf4j
@RestController
public class RequestHeaderController {

    @RequestMapping("/headers")
    public String headers(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 : 서블릿(Servlet) 기반의 요청 객체
  • HttpServletResponse : 서블릿(Servlet) 기반의 응답 객체
  • HttpMethod : HTTP 메서드 정보(GET, POST, PUT, … 등)
  • Locale : 언어 정보(우선 순위가 가장 높은 Local을 출력하게 됨)
  • @RequestHeader MultiValueMap<String, String> : 모든 HTTP 헤더를 MultiValueMap 형식으로 조회
  • @RequestHeader() : 특정 HTTP 헤더를 조회, “host”를 입력하면 localhost:8080이 반환됨
    • 속성 : required(필수 값 여부), defaultValue(기본 값)
  • @CookieValue(value = "myCookie", required = false) : 특정 쿠키를 조회한다.
    • 속성 : required(필수 값 여부), defaultValue(기본 값)
// 출력
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : request=org.apache.catalina.connector.RequestFacade@1705f661
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : response=org.apache.catalina.connector.ResponseFacade@8c114f3
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : httpMethod=GET
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : locale=ko_KR
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : headerMap={user-agent=[PostmanRuntime/7.29.2], accept=[*/*], postman-token=[b2574def-bc7b-4fcf-acdc-df486e87e64b], host=[localhost:8080], accept-encoding=[gzip, deflate, br], connection=[keep-alive]}
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : header host=localhost:8080
2022-10-29 15:18:47.224  INFO 19052 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController    : myCookie=null

 

반응형