REST API 만들기

실습에서는 뭘 할까요

CRUD 기능 구현

CRUD API를 개발하기 위해 Book에 대해서 생성, 조회, 수정, 삭제에 대한 기능을 먼저 개발해야합니다. 따라서 BookService가 기존에 고려하지 않았던 Update 와 Delete를 수행할 수 있도록 기능을 확장해야합니다.

BookService 인터페이스 수정

BookService 인터페이스에 다음 두 메소드를 추가해주었습니다.

public interface BookService {
		...
    Long updateBook(Long id, BookUpdateRequestDto bookUpdateRequestDto);
    Long deleteBook(Long id);
}

updateBook() 은 id에 해당하는 책의 정보를 bookUpdateRequestDto의 정보로 바꾸어주는 역할을 합니다. deleteBook() 은 id에 해당하는 책을 삭제하는 역할을 합니다.

BookUpdateRequestDto는 다음과 같습니다.

@Data
@Builder
public class BookUpdateRequestDto {
    private String name;
    private String author;
    private int expense;
}

name과 author와 expense를 갖고있으며, 이 정보를 받아 id에 해당하는 책의 정보를 바꿔치기 하게 할 예정입니다.

사실 위와 같은 객체 구조는 BookInsertRequestDto와 동일합니다. 그럼에도 불구하고 BookInsertRequestDto를 재활용하지 않고 BookUpdateRequestDto를 새로 만든 이유는 두 객체의 역할이 다르기 때문입니다. 만약 BookInsertRequestDto에 추가돼야할 attribute가 있는데, BookUpdateRequestDto에는 그 attribute가 추가되지 않아야 한다면 문제가 발생할 것이기 때문입니다.

BookRepository 코드 수정

BookRepository도 수정과 삭제라는 추가적인 설계에 대해 이를 반영한 코드 변화가 필요합니다.