Spring Framework 에서 사용하는 어노테이션으로, 주로 웹 어플리케이션에서 RESTful 웹 서비스를 구현할 때 사용됨. 이 어노테이션은
@Controller
와@ResponsBody
를 결합한 형태로, Spring MVC 에서 HTTP 요청을 처리하고 JSON 또는 XML 등의 데이터를 HTTP 응답으로 반환할 수 있도록 해줌.
@RestController
는 RESTful API를 쉽게 구축할 수 있도록 도와줌. 이를 통해 클라이언트 (예: 웹 브라우저, 모바일 웹) 와 서버 간에 데이터를 주고받는 RESTful 웹 서비스를 구현할 수 있음.@RestController
로 선언된 클래스의 메서드에서 반환된 객체는 자동으로 JSON 또는 XML 등의 형태로 변환되어 HTTP 응답 본문에 담김. 이 과정에서 Jackson 라이브러리 등이 사용 되어 객체를 JSON 으로 직렬화함.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!";
}
@GetMapping("/data")
public MyData getData() {
return new MyData("example", 123);
}
}
class MyData {
private String name;
private int value;
public MyData(String name, int value) {
this.name = name;
this.value = value;
}
// getters and setters
}
@RestController
: MyRestController
클래스는 REST 컨트롤러로 정의됨. 이 클래스 내의 모든 핸들러 메서드는 HTTP 응답으로 데이터를 반환할 때 자동으로 JSON으로 변환됨@RequestMapping
: 클래스 레벨에서 @RequestMapping("/api")
을 사용하여 이 컨트롤러의 기본 경로를 /api
로 설정함@GetMapping
: 두 개의 GET 요청 핸들러 메서드를 정의함/api/hello
경로로 요청이 오면 단순히 "Hello, World!"
문자열이 반환됨./api/data
경로로 요청이 오면 MyData
객체가 반환되며, 이 객체는 JSON으로 직렬화 되어 클라이언트에 전송됨/api/data
에서 반환된 MyData
객체는 자동으로 JSON 형식으로 변환됨. 클라이언트는 { "name": "example", "value": 123 }
와 같은 응답을 받게 됩니다.@RestController
를 사용하면 @Controller
와 @ResponseBody
를 따로 선언하지 않아도 되어 코드가 간결해짐@RestController
를 활용해 쉽게 구현할 수 있음.