본문 바로가기

Spring Boot

[Spring Boot] Controller & RestController 알아보기

🔍 Controller

  • Controller는 웹 애플리케이션의 요청과 응답을 처리하는 역할을 한다.
  • 사용자의 요청을 받아 해당 요청에 대한 처리를 진행하고, 그 결과를 응답으로 반환한다.
  • 일반적으로 MVC 아키텍처에서 컨트롤러는 Model, View 사이의 상호작용을 관리하며, 비즈니스 로직을 처리하지 않습니다.
  • 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용합니다.
  • Spring MVC의 컨트롤러를 사용하면서 Data를 반환해야 하는 경우도 있습니다. 컨트롤러에서는 데이터를 반환하기 위해 @ResponseBody 어노테이션을 활용해주어야 합니다. 이를 통해 Controller도 Json 형태로 데이터를 반환할 수 있습니다.

💻 예시 코드

// view 반환 예시
@Controller 
public class ControllerExample {
	
    @RequestMapping("/example1")
    public String controllerExample1() {
    return "/example1/view";
    }
}

// Json 데이터 예시
@Controller
@RequiredArgsConstructor
public class IndexController {

    private final PostsService postsService;
    
    @PostMapping("/post")
    public @ResponseBody Posts hello(@RequestBody Posts post) {
        String id = post.getId();
        return postsService.findById(id);
    }
}

🔍 RestController

  • RestController는 RESTful 웹 서비스를 제공하는데 특화된 컨트롤러입니다.
  • RESTful 아키텍처 스타일에 맞춰 HTTP 요청에 대한 응답을 제공합니다.
  • 데이터를 JSON 또는 XML 형식으로 객체 데이터를 반환하며, 주로 REST API 개발에 활용됩니다.
  • 객체를 ResponseEntity로 감싸서 반환합니다. 

💻 예시 코드

@RestController
@RequiredArgsConstructor
public class IndexController {

    private final PostsService postsService;
    
    @PostMapping("/post")
    public Posts hello(@RequestBody Posts post) {
        String id = post.getId();
        return postsService.findById(id);
    }
}