@RestController

Yuno·2024년 8월 18일
0

Spring Framework 에서 사용하는 어노테이션으로, 주로 웹 어플리케이션에서 RESTful 웹 서비스를 구현할 때 사용됨. 이 어노테이션은 @Controller@ResponsBody 를 결합한 형태로, Spring MVC 에서 HTTP 요청을 처리하고 JSON 또는 XML 등의 데이터를 HTTP 응답으로 반환할 수 있도록 해줌.


📌 주요 기능

  1. RESTful 웹 서비스
  • @RestController 는 RESTful API를 쉽게 구축할 수 있도록 도와줌. 이를 통해 클라이언트 (예: 웹 브라우저, 모바일 웹) 와 서버 간에 데이터를 주고받는 RESTful 웹 서비스를 구현할 수 있음.
  1. 자동 응답 변환
  • @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으로 직렬화 되어 클라이언트에 전송됨

👉 특징

  • 자동으로 JSON 변환 : 위 예시의 /api/data 에서 반환된 MyData 객체는 자동으로 JSON 형식으로 변환됨. 클라이언트는 { "name": "example", "value": 123 } 와 같은 응답을 받게 됩니다.
  • 간결한 코드 : @RestController 를 사용하면 @Controller@ResponseBody 를 따로 선언하지 않아도 되어 코드가 간결해짐

👉 사용 시나리오

  • API 서버 개발 : RESTful API를 제공하는 서버를 개발할 때 가장 많이 사용됨
  • 마이크로서비스 : 각각의 마이크로 서비스가 JSON 기반의 API를 제공할 때, @RestController 를 활용해 쉽게 구현할 수 있음.
  • 모바일 백엔드 : 모바일 어플리케이션과 통신하는 백엔드 서버의 API를 구현할 때 적합
profile
Hello World

0개의 댓글