스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술을 공부하고 정리하는 포스트입니다.


요청 매핑


  • 매핑 정보 @RestController
    • @Controller는 반환 값이 String이면 뷰 이름으로 인식됨 -> 뷰를 찾고 뷰가 랜더링
    • @RestController는 반환 값으로 뷰를 찾는 것이 아닌, HTTP 메시지 바디에 바로 입력 -> 실행 결과로 ok 메세지를 받는 것이 가능
  • @RequestMapping("/hello-basic")
    • /hello-basic URL 호출이 오면 메서드가 실행되도록 매핑
    • 대부분의 속성을 배열로 제공하므로 다중 설정이 가능 ex) {"/hello-basic", "/hello-go"}

HTTP 메서드

  • @RequestMapping에 method 속성으로 HTTP 메서드를 지정하지 않으면 HTTP 메서드와 무관하게 호출됨


축약 매핑

  • HTTP 메서드를 축약한 애노테이션을 사용하는 방식 : 더 직관적 -> 권장
    • 코드 내부에서 @RequestMappingmethod를 지정해 사용하는 것을 확인할 수 있음



PathVariable(경로 변수) 사용

  • 최근 HTTP API의 스타일
    • 리소스 경로에 식별자를 넣음
    • /mapping/userA
    • /users/1


  • @RequestMapping은 URL 경로를 템플릿화 가능 -> @PathVariable을 사용하면 매칭되는 부분을 편리하게 조회 가능
    • @PathVariable의 이름과 파라미터 이름이 같으면 생략 가능

PathVariable 사용 - 다중



다양한 옵션

params : 특정 파라미터 조건 매핑


  • Query String으로 넘어온 데이터에 특정 파라미터가 존재할 때 매핑되는 방식
    • 특정 파라미터가 있거나 없는 조건 추가 가능

headers : 특정 헤더 조건 매핑


  • HTTP request의 header에 특정 값이 있을 때 매핑되는 방식

consumes : Content-Type 매핑


  • HTTP request의 header에 있는 Content-Type 필드 값에 따라 매핑되는 방식
    • Content-Type은 사용자가 보내는 request body의 데이터에 대한 미디어 타입을 의미
    • HTTP status 415 : Unsupported Media Type

produce : Accept 매핑


  • HTTP request의 header에 있는 Accept 필드 값에 따라 매핑되는 방식
    • Accept 필드는 사용자가 응답(response)으로 받을 수 있는 데이터에 대한 미디어 타입을 의미
    • HTTP status 406 : Not Acceptable

요청 매핑 - API 예시


  • @RequestMapping("/mapping/users")
    • 클래스 레벨에 매핑 정보를 두면 메서드 레벨에서 해당 정보를 조합해서 사용함