-
Notifications
You must be signed in to change notification settings - Fork 3
Controller use Repository
Somkiat Puisungnoen edited this page Dec 28, 2020
·
3 revisions
UserController.java
@RestController
public class UserController {
private final UserRepository userRepository;
public UserController(UserRepository userRepository) {
this.userRepository = userRepository;
}
@GetMapping("/users")
public List<UserResponse> getAllUsers() {
List<UserResponse> userResponseList = new ArrayList<>();
List<User> users = userRepository.findAll();
for (User user : users) {
userResponseList.add(new UserResponse(user.getId(),
user.getName(), user.getAge()));
}
return userResponseList;
}
@GetMapping("/users/{id}")
public UserResponse getUserById(@PathVariable int id) {
User user = userRepository.findById(id).orElseThrow(() -> new UserNotFoundException(id));
UserResponse userResponse = new UserResponse(user.getId(),
user.getName(), user.getAge());
return userResponse;
}
- Using controller advice
UserNotFoundAdvice.java
@ControllerAdvice
public class UserNotFoundAdvice {
@ResponseBody
@ExceptionHandler(UserNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
String userNotFoundHandler(UserNotFoundException e) {
return e.getMessage();
}
}
UserNotFoundException.java
public class UserNotFoundException extends RuntimeException {
public UserNotFoundException(int id) {
super("Could not find user " + id);
}
}