[Spring MVC] API 계층 - Controller

박채은·2022년 12월 18일
0

Spring

목록 보기
12/35

REST API 기반 웹 애플리케이션의 계층은 크게 API 계층(API Layer), 서비스 계층(Service Layer), 데이터 액세스 계층(Data Access Layer)으로 구분된다.

  • API 계층: 웹 브라우저나 모바일 기기 등 클라이언트의 요청을 직접적으로 전달받는 계층

  • API 계층에는 Controller 클래스와 DTO 클래스가 있다.


Controller

Controller는 클라이언트의 HTTP 요청을 직접적으로 전달받는다.

즉, Controller 클래스가 Spring MVC에서 클라이언트 요청의 최종 목적지(Endpoint)이다.

Controller 클래스에 사용되는 애너테이션

  1. @RestController
  2. @RequestMapping

1. @RestController

  • 해당 클래스가 REST API 엔드포인트로 동작함을 알려준다.
  • @RestController 내부에는 @Component가 존재하기 때문에 애플리케이션 로딩 시, @RestController가 붙은 클래스를 Spring Bean으로 등록해준다.

⭐️ 추가로 알게 된 사실!

사실 @RestController(1) 해당 클래스를 Rest API를 사용하는 Controller라고 알려주는 기능(2) 내부의 @Component을 통해서 해당 클래스를 Spring Bean으로 등록해주는 목적만이 존재하는 줄 알았다.
하지만 그 외에도 매우 중요한 목적이 존재했다.

@RestController의 다른 주 목적은 Json 형태로 객체 데이터를 반환하는 것이다.
=> @RestController = @Controller + @ResponseBody

따라서 @RestController를 붙임으로써 해당 클래스는 Json 형태로 객체 데이터를 반환해준다!


2. @RequestMapping

  • Controller 클래스 레벨에 추가해서, 클래스에 사용되는 공통 URL를 설정한다.
    ex) @RequestMapping("/v1/members")

  • 클라이언트의 요청과 클라이언트 요청을 처리하는 핸들러 메서드를 매핑해주는 역할


핸들러 메서드(Handler Method)

  • 핸들러 = Controller 클래스
  • 핸들러 메서드
    • 클라이언트의 요청을 처리해주는 메서드
    • Controller 클래스 내부에 존재하는 메서드

핸들러 메서드의 종류

  • POST Method
    • 일반적으로 데이터를 생성한 후, 클라이언트 쪽에 생성한 데이터를 리턴해준다.
  • GET Method
  • PATCH/PUT Method
  • DELETE Method

HTTP Method 타입에 맞게 각 메서드에 Mapping 애너테이션을 추가해줘야 한다.
ex) POST Method에는 @PostMapping을, GET Method에는 @GetMapping을 추가


핸들러 메서드에 사용되는 애너테이션

  • @PostMapping: 클라이언트의 Request Body를 서버에 생성할 때 사용하는 애너테이션

  • @GetMapping: 클라이언트가 서버에 리소스를 조회할 때 사용하는 애너테이션

  • @PathVariable: URI 변수를 파라미터로 전달받을 때 사용하는 애너테이션


ResponseEntity

ResponseEntity 객체로 응답 데이터HTTP 응답 상태를 래핑해서 리턴한다.

💡 HTTP 응답 상태를 같이 래핑하는 이유는?
클라이언트는 서버가 요청을 어떻게 처리하였는지 알 수 있고 이를 기반으로 어떤 작업을 수행할지 결정할 수 있기 때문에

0개의 댓글