일반적인 Spring MVC 컨트롤러로,
주로 웹 페이지를 제공하는 데 사용된다.
뷰 이름을 반환하며, ViewResolver에 의해 처리되어 실제 뷰로 변환되어진다.
원래는 @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;
}
}
RESTful 웹 서비스 컨트롤러로,
주로 API를 제공하는 데 사용된다.
반환 값이 자동으로 JSON, XML 등의 형식으로 직렬화되어 응답 본문에 포함된다!
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/hi") // localhost:8888/api/hi
public String hi() {
return "하이 😆";
}
}
반환할 객체 정의
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;
}
}