[TIL] @Controller 와 @RestController

이해찬·2023년 7월 8일
0

TIL

목록 보기
9/20

23.07.08 - D+38, HTTP 요청과 controller

기록양식 (TIL)
-사용 개념
-의문점 or 문제
-시도해 본 것들(+응용) or 삽질
-해결
-알게 된 점(회고)

HTTP요청

기존 방식 : view1 -> HTTP요청 -> Controller +data -> view2 로 반환하는 과정(웹 브라우저, 웹 렌더링),홈페이지를 보여준다? -> html 에 관여

현재 방식 : 프론트, 백엔드 분업 -> 백엔드는 제이슨 형태의 데이터 위주로 다룸
view1 -> HTTP요청 -> RestController(controller+responsebody) +data -> 객체에 담아서 -> 요청을 한 클라이언트한테 Json형태로 반환

📟 Controller

@Controller
public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "helloView"; // View 이름을 반환합니다.
    }
}

@Controller는 주로 View를 반환하는데 사용 = 클라이언트의 요청이 들어오면, @ControllerModel의 데이터를 조합하여 View를 생성하고 이를 클라이언트에게 반환 -> 주로 웹 페이지를 생성하는데 사용


📟 RestController

@RestController
public class MyRestController {
    @RequestMapping("/hello")
    public Message hello() {
        return new Message("Hello, World!"); // 데이터 객체를 반환합니다.
    }
}

@RestController는 주로 데이터를 반환하는데 사용 = @RestController@Controller@ResponseBody를 합친 것
@ResponseBody는 메소드의 반환값을 HTTP 응답 본문에 쓰라는 의미-> 따라서 @RestController는 HTTP 요청을 처리하고 그 결과를 HTTP 응답 본문에 쓰는 역할

위의 예제에서는 Message 객체를 반환하고 있습니다. Message 객체는 자동으로 JSON 형식으로 변환되어 HTTP 응답 본문에 쓰입니다. 이 과정은 Jackson 같은 JSON 변환 라이브러리에 의해 처리됩니다.

실무에서는 @Controller와 @RestController를 상황에 맞게 사용합니다. 웹 페이지를 제공해야 할 때는 @Controller를, REST API를 제공해야 할 때는 @RestController를 사용하게 됩니다. 일반적으로 웹 애플리케이션의 백엔드에서는 @RestController를 많이 사용하며, 프론트엔드(예: Angular, React 등)에서 이 API를 호출하여 데이터를 가져오는 방식을 사용합니다.

profile
디자인에서 개발자로

0개의 댓글