RESTful 방식과 @RestController vs @Controller 차이! 🚀
안녕하세요! 오늘은 제가 최근에 배우면서 느꼈던 @RestController와 @Controller의 차이점에 대해 정리해보려고 합니다. 사실 저는 지금까지 RESTful 방식을 잘 모르고, 그냥 @Controller만 사용해서 서버를 구축했어요. 그런데 이번에 RESTful 방식과 @RestController에 대해 배우면서 "아, 이렇게도 할 수 있구나!"라고 느꼈습니다. 저처럼 배워가는 과정에 있는 분들에게 도움이 되길 바라며 시작해볼게요! 😊
1. RESTful 방식이란? 🤔
RESTful 방식은 클라이언트와 서버가 데이터를 주고받는 방식이에요. 쉽게 말하면, 클라이언트(사용자나 애플리케이션)가 서버에 요청을 보내면, 서버는 데이터를 JSON 같은 형태로 돌려주는 거예요.
- REST API: 클라이언트가 데이터를 요청할 때 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용합니다.
- 주요 특징:
- 서버는 데이터를 "리소스(Resource)"라고 부르며, 각 리소스는 고유한 URL로 식별됩니다.
- 클라이언트는 URL과 HTTP 메서드를 통해 서버에 요청을 보냅니다.
- 기존(뷰를 중심)과 달리 데이터를 중심으로 개발을 하는 방식
저는 기존에 데이터를 HTML로 렌더링해서 반환하거나, 그냥 뷰(View) 중심으로만 개발했었는데, RESTful 방식은 데이터를 주고받는 게 훨씬 직관적이더라고요!
2. @Controller vs @RestController
기존에 사용하던 @Controller와 제가 새롭게 배운 @RestController의 차이점을 간단히 비교해볼게요.
@Controller
@Controller
는 주로 HTML 파일을 렌더링하는 데 사용해요. 제가 기존에 하던 방식이 이거였어요. 뷰(View) 템플릿 엔진(e.g., Thymeleaf, JSP)으로 HTML 페이지를 만들어서 사용자에게 반환합니다.
- 기본 동작: 메서드의 반환값이 뷰 이름으로 처리돼요.
- 뷰 템플릿 엔진을 통해서 HTML을 만들어 보여줍니다.
- 예시 코드:
@Controller
public class MyController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, MVC!");
return "hello"; // templates/hello.html
}
}
- 요청:
GET http://localhost:8080/hello
- 응답: 클라이언트는
hello.html
파일을 렌더링해서 보게 됩니다.
@RestController
@RestController
는 RESTful API를 만들 때 사용해요. 데이터를 응답 본문에 직접 반환합니다. 쉽게 말하면, 서버에서 JSON 형태로 데이터를 바로 돌려준다고 보면 돼요.
- 기본 동작: 메서드의 반환값이 바로 JSON이나 XML로 직렬화돼서 클라이언트로 넘어갑니다.
- 내부적으로:
@Controller
와@ResponseBody
를 합쳐놓은 느낌이에요.- 여기서
@ResponseBody
는 메서드의 반환값을 뷰 이름이 아니라 JSON이나 XML과 같은 데이터 형식으로 직접 HTTP 응답 본문에 담아 반환하도록 해주는 역할을 해요. 덕분에 클라이언트는 데이터를 더 직관적으로 받을 수 있어요.
- 여기서
- 예시 코드:
@RestController
public class MyRestController {
@GetMapping("/api/hello")
public String sayHello() {
return "Hello, REST!";
}
}
- 요청:
GET http://localhost:8080/api/hello
- 응답: 클라이언트는 그냥
Hello, REST!
라는 텍스트를 데이터로 받아요.
3. 주요 차이점 비교
저도 배우면서 가장 헷갈렸던 부분인데, 이렇게 표로 정리하니까 이해가 더 잘되더라고요. 😊
특성 | @RestController | @Controller |
---|---|---|
주된 목적 | REST API 응답 | HTML 페이지 렌더링 |
기본 반환값 처리 | 데이터(JSON/XML 등) 직접 반환 | 뷰 이름 반환 및 템플릿 렌더링 |
내부 동작 | @Controller + @ResponseBody |
순수 @Controller |
주로 사용되는 용도 | RESTful 웹 서비스 | 전통적인 서버 사이드 웹 애플리케이션 |
4. 요약 및 정리
배워보니 @RestController는 데이터를 쉽게 주고받을 수 있게 해줘서 RESTful API를 구현하기에 정말 편리하더라고요. 반면, 기존의 @Controller는 HTML 파일 렌더링에 강점을 가지고 있어서, 사용 목적에 따라 선택하면 될 것 같아요.
- @RestController: 데이터를 JSON으로 반환.
- @Controller: HTML을 반환.
저도 아직 배우는 중이라, 더 깊이 공부하면서 새로운 걸 알게 되면 또 정리해볼게요!
'자바와 스프링 부트로 생애 최초 서버 만들기' 카테고리의 다른 글
#13 데이터베이스와 MySQL 24.12.19 (0) | 2025.02.12 |
---|---|
#11 도서관 유저 조회 API 개발과 테스트 24.12.18 (0) | 2025.02.12 |
#10 도서관 유저 생성 API 개발 24.12.18 (0) | 2025.02.12 |
#10 도서관 유저 생성 API 개발 (0) | 2025.02.12 |
#9 POST API 개발 및 테스트! 24.12.18 (0) | 2025.02.12 |