[Spring/기초] Controller Vs RestControllerSpring/Spring 기초2024. 1. 19. 02:44
Table of Contents
728x90
반응형
이제 Controller를 사용하다 보면 Rest랑 그냥 Controller가 있을 것이다 이것에 대해서 알아볼 것이다.
RestController VS Controller
결론 부터 말하자면
- @Controller
기본적인 웹 애플리케이션에서 페이지를 제공할 때 사용한다. - @RestController
주로 RESTfulAPI를 개발할 때 사용하며 JSON 또는 XML 형태의 데이터를 주고 받는데 특화되어 있다. - html을 반환할 때는 Controller, 데이터를 반환할땐 RestController 이런식으로 둘다 사용하면 된다.
이를 표로 나타 내려면
Controller 장점 | Controller 단점 | RestController 장점 | RestController 단점 | |
뷰 렌더링 및 페이지 구성 | 다양한 뷰 렌더링 지원 | 뷰 렌더링을 위한 추가 설정 필요 | JSON, XML 등의 데이터 형식에 최적화 | HTML 페이지를 렌더링하는 데 추가 작업 필요 |
전통적인 웹 애플리케이션 호환성 | 전통적인 웹 애플리케이션과의 호환성 | RESTful API에 특화된 기능이 부족할 수 있음 | 간결하고 명확한 RESTful API 개발 가능 | 다양한 미디어 및 뷰 렌더링을 위한 지원이 제한적 |
라우팅 및 흐름 제어 | 더 복잡한 라우팅 및 흐름 제어 가능 | 간단한 RESTful API 개발에 비해 과도하게 복잡할 수 있음 | 간단하고 명확한 URL 매핑 및 RESTful API 개발이 용이 | 라우팅이 복잡하거나 특정한 흐름 제어가 필요한 경우 제한적 |
미디어 및 데이터 전달 | HTML 페이지 및 다양한 미디어 제공 가능 | RESTful API의 경우 주로 JSON 또는 XML 데이터를 전송 | JSON, XML 형태의 데이터 전달에 특화되어 있음 | HTML 페이지나 다양한 미디어를 렌더링하는 데 추가 작업 필요 |
이번에는 예제 코드이다
@Controller
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class MyController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, World!");
return "hello"; // View의 이름을 반환
}
}
sayHello 메서드는 "hello" 라는 뷰를 반환하며 모델에 Hellow, World를 추가한다.
@RestController
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class MyRestController {
@GetMapping("/hello")
public String sayHello() {
return "Hello, World!"; // 직접 데이터를 반환 (뷰 렌더링 없음)
}
}
sayHello 메서드는 직접 Hellow, World 문자열을 반환하며 뷰 렌더링이 필요하지 않다. @ResquestMappring은 경로를 지정하고 있다.
RESTFul API를 사용한다는게 장점이 있나?
- 단순성과 가벼움
뷰 렌더링은 웹 페이지를 생성하는 복잡한 작업을 수반할 수 있다. 이에 반해서 RESTful API는 비교적 훨씬 간단한 데이터 교환을 목적으로 하기 때문에 뷰 렌더링 없이 단순하게 데이터를 주고받는 것이 효율적이다. - 클라이언트의 선택권
클라이언트가 데이터를 어떻게 표시할지 결정할 수 있다.. 즉 받은 데이터를 통해서 자체적으로 랜더링하거나 표현 방식을 설정할 수 있다. - 애플리케이션 분리
뷰 렌더링 없이 API를 개발하면, 백엔드와 프론트엔드를 보다 쉽게 분리할 수 있다. 백엔드는 데이터 관리에 중점을 두고, 프론트 엔드를 데이터 표시를 하는 방식에 중점을 둘 수 있다. - 성능 향상
뷰 렌더링을 하지 않으면 서버에서 클라이언트로 보내는 데이터가 더 가벼워져 네트워크 성능이 향상될 수 있다.
728x90
반응형
'Spring > Spring 기초' 카테고리의 다른 글
[Spring/기초] spring MVC (0) | 2024.01.21 |
---|---|
[Spring/기초] Entity 만들기 (0) | 2024.01.20 |
[Spring/기초] Spring boot Mysql 연결 (0) | 2024.01.20 |
[Spring/기초] Spring boot 기본 폴더 구조 설명 (0) | 2024.01.19 |
[Spring/기초] Controller (0) | 2024.01.18 |
@코딩하는 자연대생 :: 자연대생도 코딩을 하고 싶어
Coding, Software, Computer Science 내가 공부한 것들 잘 이해했는지, 설명할 수 있는지 적는 공간