[spring 토이프로젝트] REST API CRUD 구현하기-2. Service, Request, Controller

이건회·2022년 8월 18일
0

springRestApi

목록 보기
2/2

4. Service 구현하기

  • 책조회 관련 함수는 총 3개를 구현한다.
  • 먼저 파라미터를 Long 타입인 id값으로 받는지, String인 도서번호(isbn) 값으로 받는지에 따라 리턴하는 readBook()함수다.
  • Optional 객체를 생성하여 null 체크를 하고, ispresent()함수로 객체에 값이 있을 경우 get()함수를 통해 책 정보를 받아온다.(참고 : https://jookipedia.tistory.com/17, https://homoefficio.github.io/2019/10/03/Java-Optional-%EB%B0%94%EB%A5%B4%EA%B2%8C-%EC%93%B0%EA%B8%B0/)
  • 해당하는 엔티티가 없는 EntityNotFoundException 에러가 쓰면 메세지를 출력한다.
  • readbooks() 함수를 활용해 전체 책 객체를 조회한다

  • 책 객체를 생성하는 createBook 함수다
  • 객체를 복사하는 BeanUtils.copyProperties를 활용해 구현할 BookCreationRequest 요청에서 받아온 내용을 새롭게 생성한 bookToCreate객체에 복사하고 author 까지 받아온 id 값으로 세팅하여 저장한다.
    (참고: https://zzang9ha.tistory.com/304)
  • 삭제하는 deleteBook 함수 설명은 생략

  • 회원을 수정하는 updateMember 함수다.
  • 작가를 생성하는 createAuthor 함수 역시 위와 같다.

  • 도서를 대출하는 lendABook 함수다
  • throw 를 통해 잘못된 bookId 인풋값이 들어오면 RuntimeException을 발생시키도록 한다.
    (참고 : https://nhj12311.tistory.com/204)
  • forEach 람다식을 활용해 요청값에서 id값을 차례로 빼와 해당 도서를 찾고, 해당 책 정보를 Burrowed로 설정한다. 만약 burrowedbook 에 값이 들어있지 않으면 새로운 정보를 세팅해 저장한다.
    (참고 : https://ponyozzang.tistory.com/406)
  • Instant 클래스를 활용해 대출시각과 만기일 값을 세팅할 수 있다.
    (참고 : https://www.daleseo.com/java8-instant/)

  • 작가 조회, 책 수정, 회원 조회 함수를 작성한다.

5. Controller 구현하기

  • 비슷한 로직으로 나머지 메소드 컨트롤러도 만들어준다
profile
하마드

1개의 댓글

comment-user-thumbnail
2022년 10월 27일

Request 클래스에 대한 설명이 없어 레퍼런스 보고 작성했습니다

답글 달기