Spring | RestController를 알아보자

초보개발자 시점·2024년 1월 2일

Spring

목록 보기
1/2
post-thumbnail

RestController

💡 RestController는 Spring Framework에서 제공되는 어노테이션 중 하나로, 주로 RESTful 웹 서비스를 개발할 때 사용됩니다. 해당 클래스가 REST 엔드포인트를 처리하는 컨트롤러임을 나타냅니다.
또한 주로 웹 서비스에서 JSON또는 XML 형식의 데이터를 반환하는데 사용됩니다.

  • 간단히 말하면 @RestController는 @Controller어노테이션과 @ResponseBody 어노테이션을 합친 것과 유사한 역할을 합니다. 즉, 메서드의 반환 값이 HTTP 응답 본문으로 직접 매핑되어 클라이언트에게 전달되는 RESTful 서비스를 구현하는 데 편리하게 사용됩니다.

Controller VS RestController

  • Controller
@Controller
public class MyController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // 뷰 이름으로 해석
    }
}

위 코드와 같이 Controller는 /hello 라는 요청이 오면 return에 있는 "hello"라는 뷰를 반환합니다. 이는 스프링에서 뷰 리졸버(View Resolver)를 통해 실제 뷰 파일(hello.html)을 연결시킵니다.


  • RestController
@RestController
public class MyRestController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // 직접 HTTP 응답 본문으로 반환
    }
}

Controller와 달리 RestController는 /hello 라는 요청이 오면 hello 라는 데이터 값을 그대로 반환합니다.


결과값

  • 사실 저는 처음에 보았을 때 어떠한 차이가 존재하는지 몰랐습니다. 똑같이 흰 배경화면에 글자가 출력되고 있는데 어떤 점이 다른 걸까? 위의 사진은 Controller에 대한 반환 값인 hello.html을 보여줍니다. 반면에 아래는 RestController의 반환 값인 hello가 그대로 화면에 출력되고 있습니다.
    RestController는 hello.html이 없어도, 반환 값인 hello가 body에 출력됩니다.

그래서 뭐가 다른데?

  • Controller는 HTML 페이지를 생성하고 반환하는 데 주로 사용되고, 일반적으로 Spring MVC 패턴, 아키텍처에서 사용됩니다.
  • RestController는 주로 데이터 API를 제공하고, 클라이언트와 서버 간의 데이터 교환에 중점을 둡니다.

마무리하면서

시간이 지나다 보니, 사실 MVC 패턴으로 Controller를 접하는 경우가 많습니다. 그러다 보니 RestController가 데이터를 그대로 반환한다,라는 말이 와닿지 않을 수 있을 거 같은데요,Controller는 뷰(html)를 반환한다, 보여준다. 반면에 RestController는 데이터만을 전달한다, 던져준다.라고 생각하시면 될 거 같습니다.

profile
뭘 모르는지를 모르겠는

0개의 댓글