기록양식 (TIL)
-사용 개념
-의문점 or 문제
-시도해 본 것들(+응용) or 삽질
-해결
-알게 된 점(회고)
기존 방식 :
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
를 반환하는데 사용 = 클라이언트의 요청이 들어오면,@Controller
는Model의 데이터
를 조합하여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를 호출하여 데이터를 가져오는 방식을 사용합니다.