모르지 않다는 것은 아는것과 다르다.

Spring

Handler Methods

채마스 2022. 4. 9. 12:31

@RequestMapping

@RequestMapping(
        name = "nameForView", // 뷰 템플릿에서 찾는 이름
        value = "/places", // URI 경로
        path = "/places", // URI 경로
        method = RequestMethod.GET, // Get 방식
        params = "test=true", // test=true 파라미터 있는 요청
        headers = "header-auth=stupidPassword", // header-auth 헤더값 있는 요청
        consumes = MediaType.APPLICATION_JSON_VALUE, // json 으로 데이터 주는 요청
        produces = MediaType.APPLICATION_JSON_VALUE // json 데이터 받을 수 있는지 확
)
public List<String> getPlaces() {
    return List.of("p1", "p2");
}
  • name:뷰템플릿에서식별할때쓰는이름
  • value, path: URI
  • method: HTTP method (ex: GET, POST, ...)
  • params: 파라미터 검사
  • headers: 헤더 검사
  • consumes: 헤더의 Content-Type 검사
  • produces: 헤더의 Accept 검사

 

핸들러 메소드가 받을 수 있는 요청들

  • 메소드 파라미터로 넣을 수 있는 타입들은 아래와 같다.
  • ServletRequest, ServletResponse, HttpSession
  • WebRequest, NativeWebRequest
  • @RequestParam, @PathVariable
    • @RequestParam 은 생략가능하지만 생략할 경우 required=false 가 기본값이다.
    • 생략안하면 equired=true 가 기본값이다.
  • @RequestBody, HttpEntity
  • @ModelAttribute, @SessionAttribute, Model, ModelMap
  • @RequestHeader, @CookieValue
  • Principal, Locale, TimeZone, InputStream, OutputStream, Reader, Writer, ....
  • 그 밖에 등등...

 

핸들러 메소드가 내보낼 수 있는 응답들

  • 메소드가 리턴할 수 있는 타입들은 아래와 같다.
  • ModelAndView
  • String, View
  • @ModelAttribute, Map, Model
  • @ResponseBody
  • HttpEntity, ResponseEntity
    • ResponseEntity 로 반환할 경우 @ResopnseBody 를 명시하지 않아도 된다.
  • HttpHeaders
    • 응답에 바디는 없고 헤더만 있다면 HttpHeaders 로 보낼 수 있다.
  • void
  • 등등




REFERENCES

  • 김은호님의 SpringMVC

'Spring' 카테고리의 다른 글

ApplicationEventPublisher  (0) 2022.06.11
MapStruct  (0) 2022.04.09
함수 기반 API 설계  (0) 2022.03.19
Spring Cache Abstraction  (0) 2022.03.19
@ControllerAdvice  (0) 2022.03.19