Notice
Recent Posts
Recent Comments
Link
yeon's blog
[Spring] HTTP 요청 - 기본, 헤더 정보 조회 본문
HTTP 요청 - 기본, 헤더 정보 조회
애노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 지원한다.
HTTP 요청 헤더 정보를 조회하기 위한 코드를 작성한 후, @Slf4j 로깅 라이브러리를 이용해 각 요청에 대한 로그를 남겨 확인해보았다.
*로그 관련 글 첨부 https://hyeyeon-ii.tistory.com/66
RequestHeaderController 전체코드
package hello.springmvc.basic.request;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
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 java.util.Locale;
@Slf4j
@RestController
public class RequestHeaderController {
@RequestMapping("/headers")
public String header(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";
}
}
- HttpServletReqeust: 서블릿 기반의 요청 객체
- HttpServletResponse: 서블릿 기반의 응답 객체
- HttpMethod: HTTP 메서드 정보 조회
- Locale: 언어 정보 조회(우선 순위가 높은 locale 출력)
- @RequestHeader MultiValueMap<String, String> headerMap
- 모든 HTTP 헤더를 MutliValue 형식으로 조회
- @RequestHeader("host") String host:
- 특정 HTTP 헤더 조회
- 속성
- 필수값 여부: required
- 기본값 속성: defaultValue
- @CookieValue(value = "myCookie", required = false)
- 특정 쿠키 조회
- 속성
- 필수값 여부: required
- 기본값 속성: defaultValue
출력
2024-01-14T13:31:13.519+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : request=org.apache.catalina.connector.RequestFacade@3707a89b
2024-01-14T13:31:13.519+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : response=org.apache.catalina.connector.ResponseFacade@54d3b869
2024-01-14T13:31:13.519+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : httpMethod=GET
2024-01-14T13:31:13.519+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : locale=ko_KR
2024-01-14T13:31:13.519+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : headerMap={host=[localhost:8080], user-agent=[Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:121.0) Gecko/20100101 Firefox/121.0], accept=[text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8], accept-language=[ko-KR,ko;q=0.8,en-US;q=0.5,en;q=0.3], accept-encoding=[gzip, deflate, br], connection=[keep-alive], referer=[http://localhost:8080/], cookie=[username-localhost-8888="2|1:0|10:1704706949|23:username-localhost-8888|44:ODgzOTZhODJiYWVmNDgyNTg2Mzk2Y2NlZjcyNDVmZGI=|c566d6872b83eb7cf3a42b344bdf4ce3e94cb88f5fa53cb41a5f15562fe7b2d3"; _xsrf=2|d0eeb3ee|5f118ebeda60d9366104a77f9cef350f|1704639082; JSESSIONID=FB844F2EDF9E62DCCB858E2558D61C50], upgrade-insecure-requests=[1], sec-fetch-dest=[document], sec-fetch-mode=[navigate], sec-fetch-site=[same-origin], sec-fetch-user=[?1]}
2024-01-14T13:31:13.519+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : header host=localhost:8080
2024-01-14T13:31:13.520+09:00 INFO 4160 --- [nio-8080-exec-3] h.s.b.request.RequestHeaderController : myCookie=null
'Spring > Spring 개념' 카테고리의 다른 글
[Spring] HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form, @RequestParam, @ModelAttribute (1) | 2024.01.14 |
---|---|
[Spring] HTTP 요청 매핑 및 API 예시 (0) | 2024.01.14 |
[Spring] 로그(Log)와 로깅 프레임워크(Logging Framework) (2) | 2024.01.13 |
[Spring] Spring Security 처리 과정 (0) | 2023.12.12 |
[Spring] Spring Security 개념 (0) | 2023.12.12 |