코드 그라데이션
HTTP 요청 - 기본, 헤더 조회 본문
HTTP 요청 - 기본, 헤더 조회
어노테이션 기반의 스프링 컨트롤러는 (정말정말) 다양한 파라미터를 지원한다.
예시를 몇 가지 살펴본다.
RequestHeaderController
@Slf4j
@RestController
public class RequestHeaderController {
@RequestMapping("/headers")
public String headers(HttpServletRequest request,
HttpServletRequest response,
HttpMethod httpMethod,
Locale locale,
@RequestHeader MultiValueMap<String, String> headerMap,
@RequestHeader("host") String host, // 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 request와 HttpServletRequest response: HTTP 요청과 응답을 처리하는 객체.
- HttpMethod httpMethod: 현재 요청의 HTTP 메서드 (GET, POST, PUT 등)를 나타냄.
- Locale locale: 현재 요청의 로캘 (언어 및 국가 정보)을 나타냄
- @RequestHeader MultiValueMap<string, string> headerMap</string, string> : HTTP 요청의 헤더 정보를 MultiValueMap 형식으로 가져옴.
- @RequestHeader("host") String host: HTTP 요청 헤더 중 "host" 헤더의 값을 문자열로 가져옴.
- @CookieValue(value = "myCookie", required = false) String cookie: 쿠키 중 이름이 "myCookie"인 쿠키의 값을 가져오는데, 이 쿠키가 없어도 오류를 발생시키지 않는다.
로그 및 리턴
- 여기서는 로깅을 사용하여 다양한 정보를 기록하고 있습니다. log.info()를 사용하여 각 정보를 로그로 출력함.
- {}를 사용하여 문자열 템플릿에 변수 값을 삽입한다.
- 예를 들어, log.info("request={}", request);는 "request=" 뒤에 request 객체의 내용을 출력.
이를 통해 HTTP 요청, 응답, 메서드, 로캘, 헤더 정보, 쿠키 정보 등을 로그로 남긴다. - return "ok" 는 클라이언트에게 응답으로 전송된다.
자세한 내용은 스프링 공식 문서 참고
참고 1
> @Conroller 의 사용 가능한 파라미터 목록은 다음 공식 메뉴얼에서 확인할 수 있다.
> https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-annarguments
참고 2
> @Conroller 의 사용 가능한 응답 값 목록은 다음 공식 메뉴얼에서 확인할 수 있다.
> https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-annreturn-
types
728x90
'Spring > MVC 1' 카테고리의 다른 글
HTTP 요청 파라미터 - @RequestParam (0) | 2023.10.08 |
---|---|
HTTP 요청 파라미터 - 쿼리 파라미터, HTML Form (1) | 2023.10.08 |
<추가> Locale이란? By chat GPT (0) | 2023.10.08 |
요청 매핑 - API 예시 (1) | 2023.10.07 |
요청 매핑 (0) | 2023.10.07 |
Comments