Spring Boot를 이용한 RESTful Web Services 개발 #17 사용자 삭제 API - DELETE HTTP Method

Jake Seo·2021년 9월 17일
0

Spring-boot-restful

목록 보기
17/17

UserDaoService에 삭제 추가하기

deleteById()

    public User deleteById(int id) {
        User findUser = findOne(id);

        if(findUser != null) {
            users.remove(findUser);
        }

        return findUser;
    }

기존에 있던 findOne() 메소드를 이용해서 만들어보았다.

User 컨트롤러에 메소드 추가하기

deleteUser()

    @DeleteMapping("/{id}")
    public User deleteUser(@PathVariable int id) {
        User deleteUser = service.deleteById(id);

        if(deleteUser == null) {
            throw new UserNotFoundException(id);
        }

        return deleteUser;
    }

약간의 리팩토링하기

throw new UserNotFoundException()을 던지는 곳 변경하기

UserNotFoundException은 사용자를 찾을 때만 발생하는 Exception이다. 여러 포인트에 몰아놓지 말고 한 메소드에 넣자.

가장 대표적인 메소드가 findOne이기 때문에 여기에 넣는게 좋다고 생각했다.

    public User findOne(int id) {
        return users.stream()
                .filter((user) -> user.getId() == id)
                .findFirst()
                .orElseThrow(() -> new UserNotFoundException(id));
    }

다른 곳에서 쓰이는 UserNotFoundException은 확인 후에 삭제했다.

update의 결과는 204 noContent로

    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(@RequestBody(required = true) User user, @PathVariable int id) {
        service.updateById(id, user);

        return ResponseEntity.noContent().build();
    }

REST API의 단점

HTTP가 가지고 있는 모든 메소드 타입을 지원하지 않고 현재는 GET, POST, PUT, PATCH, DELETE만 지원하고 있다.

profile
풀스택 웹개발자로 일하고 있는 Jake Seo입니다. 주로 Jake Seo라는 닉네임을 많이 씁니다. 프론트엔드: Javascript, React 백엔드: Spring Framework에 관심이 있습니다.

0개의 댓글