Study/Spring

[스프링 웹 MVC 활용] 02. 핸들러 메소드의 Argument와 Return 타입

going.yoon 2022. 3. 1. 20:14

1. 메소드 Argument와 Return Type

: 주로 요청 그 자체 또는 요청에 들어있는 정보를 받아오는데 사용한다.

https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-ann-arguments

 

Web on Servlet Stack

Spring Web MVC is the original web framework built on the Servlet API and has been included in the Spring Framework from the very beginning. The formal name, “Spring Web MVC,” comes from the name of its source module (spring-webmvc), but it is more com

docs.spring.io

 

Argument List

- 요청 또는 응답 자체에 접근 가능한 API

  • WebRequest
  • NativeWebRequest
  • ServletRequest(Response)
  • HttpServletRequest(Response)

- 요청 본문을 읽어오거나, 응답 본문을 쓸 때 사용할 수 있는 API

  • InputStream
  • Reader
  • OutputStream
  • Writer

- 스프링 5, HTTP/2 리소스 푸쉬에 사용

  • pushBuilder
@GetMapping("/events")
@ResponseBody
public String events(PushBuilder pushBuilder){
    // 클라이언트가 request 하기 전에 서버가 push 해버림
    return "events";
}

- HTTP Method에 대한 정보 지원

  • HttpMethod

- LocaleResolver가 분석한 요청의 Locale 정보

  • Locale
  • TimeZone
  • ZoneId

- URI 템플릿 변수 읽을 때 사용

  • @PathVariable

- URI 경로 중에 키/값 쌍을 읽어올 때 사용

  • @MatrixVariable

- 서블릿 요청 매개변수 값을 선언한 메소드 아규먼트 타입으로 변환. 단순타입인 경우에 이 애노테이션 생략 가능

  • @RequestParam

- 요청 헤더값을 선언한 메소드 아규먼트 타입으로 변환

  • @RequestHeader

 

Return Type List

- 리턴 값을 HttpMessageConverter를 사용해 응답 본문으로 사용

  • @ResponseBody

- 응답 본문 뿐 아니라 헤더 정보까지, 전체 응답을 만들때 사용. RestApi에서 사용한다. 특정 조건에 따라 응답코드를 설정할 수도 있다. 

  • HttpEntity
  • ResponseEntity

ResponseEntity를 사용한 RestApi 리턴값 구현은 아래의 게시물에 잘 설명되어있다.

https://devlog-wjdrbs96.tistory.com/182

 

[Spring Boot] ResponseEntity란 무엇인가?

먼저 REST API가 무엇인지는 아래 블로그를 먼저 잘 읽어보자. https://meetup.toast.com/posts/92 REST API 제대로 알고 사용하기 : TOAST Meetup REST API 제대로 알고 사용하기 meetup.toast.com 1. ResponseEn..

devlog-wjdrbs96.tistory.com

 

이외에 View를 직접 리턴해주거나 Model을 리턴해줄 수 있다.

Model만 리턴해 줄 경우에는 Spring에서 알아서 RequestToViewNameTranslator를 통해 렌더링할 뷰를 찾아온다.

 

 

각각의 아규먼트와 리턴타입에 대해서는 다음 게시물에서 gonna cover up