반응형
본 내용은 온라인 강의 사이트 인프런의 김영한 님의 강의 내용이 포함되어 있습니다.
'스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술'
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
반응형
'프레임워크(Framework) > Spring' 카테고리의 다른 글
[Spring MVC] 스프링 MVC @RequestParam 사용 방법 정리 (0) | 2022.11.17 |
---|---|
[Spring MVC] HTTP 요청 파라미터 (0) | 2022.11.15 |
[Spring] 롬복(Lombok) @Data 어노테이션 (0) | 2022.11.14 |
[Spring MVC] 스프링 MVC 뷰 리졸버(View Resolver) (0) | 2022.11.13 |
[Spring MVC] 스프링 MVC 핸들러 매핑과 핸들러 어댑터 (0) | 2022.11.12 |