티스토리 뷰
@RestController
용도로는 RESTful API 개발에 적합합니다. 클라이언트(예: 모바일 앱, 단일 페이지 애플리케이션)와 데이터를 JSON 형식으로 교환하는 경우에 사용됩니다.
반환타입으로는 메서드가 기본적으로 객체를 반환하며, 해당 객체는 자동으로 JSON 형식의 HTTP 응답 본문으로 변환됩니다.
@RestController
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
}
@Controller
@Controller
@RequestMapping("/users")
public class UserController {
private final UserService userService;
private final TemplateEngine templateEngine;
public UserController(UserService userService, TemplateEngine templateEngine) {
this.userService = userService;
this.templateEngine = templateEngine;
}
@GetMapping
public String getAllUsers(Model model) {
List<User> users = userService.getAllUsers();
model.addAttribute("users", users);
return "users/list";
}
@GetMapping("/{id}")
public String getUserById(@PathVariable Long id, Model model) {
User user = userService.getUserById(id);
model.addAttribute("user", user);
return "users/details";
}
@GetMapping("/new")
public String newUser(Model model) {
model.addAttribute("user", new User());
return "users/form";
}
@PostMapping
public String createUser(@ModelAttribute User user, RedirectAttributes redirectAttributes) {
User createdUser = userService.createUser(user);
redirectAttributes.addFlashAttribute("message", "User created successfully.");
return "redirect:/users/" + createdUser.getId();
}
}
예시에서 @RestController 클래스는 RESTful API 엔드포인트를 제공하며, 메서드가 직접 객체를 반환합니다.
반면ㅇㅔ, @Controller 클래스는 보통의 웹 애플리케이션 개발을 위해 사용되며, 메서드가 String의 View 이름을 반환합니다.