반응형
어노테이션 기반의 스프링 컨트롤러는 다양한 파라미터를 받아올 수 있다.
어떠한 파라미터를 받아올 수 있는지 몇 가지 예제를 통해 살펴보겠다.
📚 HTTP 헤더 조회
@Slf4j
@RestController
public class RequestHeaderController {
@RequestMapping("/headers")
public String headers(HttpServletRequest req,
HttpServletResponse res,
HttpMethod httpMethod,
Locale locale,
@RequestHeader MultiValueMap<String, String> headerMap,
@RequestHeader("host") String host,
@CookieValue(value="myCookie", required=false) String cookie) {
log.info("request={}", req);
log.info("response={}", res);
log.info("httpMethod={}", httpMethod);
log.info("locale={}", locale);
log.info("headerMap={}", headerMap);
log.info("header host={}", host);
log.info("myCookie={}", cookie);
return "ok";
}
}
- HttpServletRequest
- HttpServletResponse
- HttpMehotd: HTTP 메소드 조회 (ex: POST, GET, ...)
- Locale: 가장 우선순위 높은 Locale 정보 조회 (ex: ko_kr)
- @RequestHeader: HTTP 헤더 정보 조회
- @CookieValue: 쿠키 조회
📃 그 외 설명 (@Slf4j와 MutiValueMap) ▼
더보기
@Slf4j
- 로그를 편하게 찍기 위해 추가한 어노테이션
- 롬복에서 지원
- 아래 코드를 자동으로 생성해 개발자는 log를 통해 로그 작성 가능
private static final org.slf4j.Logger log =
org.slf4j.LoggerFactory.getLogger(RequestHeaderController.class);
MultiValueMap<String, String>
- Map과 다르게 하나의 키에 여러개의 값을 가질 수 있음
- key A에 대해 value1, value2가 존재한다면 map.get("A") 시 [value1, value2]가 조회됨
그 외에 @Controller에서 받아올 수 있는 파라미터나 응답 값 목록은 Spring 공식 문서에서 확인할 수 있다.
아래는 그 목록을 옮겨둔 것이며 하나하나 꼼꼼하게 살펴볼 필요 없다.
이런 것이 있구나~ 정도로만 넘어가고 실무에서 자주 사용하는건 이후에 예제 코드를 통해 써보도록 하자.
( 👉 https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-arguments )
~~~TODO 설명 추가예정 ~~~
📖 파라미터 목록
- WebRequest, NativeWebRequest
- ServletRequest, ServletResponse
- HttpSession
- PushBuilder
- Principal
- HttpMethod
- Locale
- TimeZone, ZoneId
- InputStream, Reader
- OutputStream, Writer
- @PathVariable
- @MatrixVariable
- @RequestParam
- @RequestHeader
- @CookieValue
- @RequestBody
- HttpEntity<B>
- @RequestPart
- Model, ModelMap
- RedirectAttributes
- @ModelAttribute
- BindingResult
- SessionStatus, @SessionAttributes
- UriComponentsBuilder
- @SessionAttribute
- @RequestAttribute
📖 응답 목록
- @ResponseBody
- HttpEntity<B>, ResponseEntity<B>
- HttpHeaders
- String
- View
- Map, Model
- @ModelAttribute
- ModelAndView
- void
- DeferredResult<V>
- Callable<V>
- ListenableFuture<V>, CompletionSatge<V>, CompletableFuture<V>
- ResponseBodyEmitter, SseEmitter
- StreamingResponseBody
- ReactiveAdapterRegistry
본 게시글은 김영한 님의 '스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술' 강의를 구매 후 정리하기 위한 포스팅입니다.
내용을 임의로 추가, 수정, 삭제한 부분이 많으며 정확한 이해를 위해서 강의를 구매하시는 것을 추천 드립니다.
반응형
'Develop > Spring+JPA' 카테고리의 다른 글
[Spring] HTTP 응답 (0) | 2021.08.11 |
---|---|
[Spring] http 요청 데이터 조회 (0) | 2021.08.09 |
[Spring] 요청 매핑 (0) | 2021.06.25 |
[스프링 MVC] @Controller, @RequestMapping (0) | 2021.05.27 |
[스프링 MVC] 뷰 리졸버 (0) | 2021.05.26 |