public User deleteById(int id) {
User findUser = findOne(id);
if(findUser != null) {
users.remove(findUser);
}
return findUser;
}
기존에 있던 findOne()
메소드를 이용해서 만들어보았다.
@DeleteMapping("/{id}")
public User deleteUser(@PathVariable int id) {
User deleteUser = service.deleteById(id);
if(deleteUser == null) {
throw new UserNotFoundException(id);
}
return deleteUser;
}
UserNotFoundException
은 사용자를 찾을 때만 발생하는 Exception이다. 여러 포인트에 몰아놓지 말고 한 메소드에 넣자.
가장 대표적인 메소드가 findOne
이기 때문에 여기에 넣는게 좋다고 생각했다.
public User findOne(int id) {
return users.stream()
.filter((user) -> user.getId() == id)
.findFirst()
.orElseThrow(() -> new UserNotFoundException(id));
}
다른 곳에서 쓰이는
UserNotFoundException
은 확인 후에 삭제했다.
@PutMapping("/{id}")
public ResponseEntity<User> updateUser(@RequestBody(required = true) User user, @PathVariable int id) {
service.updateById(id, user);
return ResponseEntity.noContent().build();
}
HTTP가 가지고 있는 모든 메소드 타입을 지원하지 않고 현재는 GET
, POST
, PUT
, PATCH
, DELETE
만 지원하고 있다.