Spring Boot: @Controller , @RestController

김아무개·2023년 5월 2일
0

Spring Boot 🍃

목록 보기
3/95

@Controller

일반적인 Spring MVC 컨트롤러로,
주로 웹 페이지를 제공하는 데 사용된다.
뷰 이름을 반환하며, ViewResolver에 의해 처리되어 실제 뷰로 변환되어진다.


🐵. @Controller 에서 HTML 페이지 , json 객체 내려주는 방법

원래는 @Controller 어노테이션이 붙은 컨트롤러 페이지에서는 html 뷰페이지만 내려보내고,
json 응답은 @RestController에서만 내리는게 맞지만,
html과 json을 요구하는 특수한 상황(?)이 오게 된다면 사용할 수 있는 방법이다.

@Controller
public class PageController {

	// main.html 반환
    @RequestMapping("/main")
    public String main() {
        return "main.html";
    }

	// json 객체 반환
    @ResponseBody
    @GetMapping("/user")
    public User user() {
        var user = new User(); // 타입 추론! 클래스 이름이 아주 긴 경우 유용하게 쓰인다.
        user.setName("zh");
        user.setAge(130);
        return user;
    }
}

@RestController

RESTful 웹 서비스 컨트롤러로,
주로 API를 제공하는 데 사용된다.
반환 값이 자동으로 JSON, XML 등의 형식으로 직렬화되어 응답 본문에 포함된다!

@RestController 예제

  1. String 반환
@RestController 
@RequestMapping("/api") 
public class ApiController {

    @GetMapping("/hi") // localhost:8888/api/hi
    public String hi() { 
        return "하이 😆";
    }
}


  1. 객체 반환

반환할 객체 정의

class Test {
    private String name;
    private String haha;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getHaha() {
        return haha;
    }

    public void setHaha(String haha) {
        this.haha = haha;
    }
}

controller 정의

@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/test") // localhost:8888/api/test
    public Test test() {
        Test test = new Test();
        test.setName("zhyun");
        test.setHaha("🙈");
        return test;
    }
}


profile
Hello velog! 

0개의 댓글