Controller - 책 한건보기, 책 삭제하기, 책 수정하기

jihan kong·2022년 10월 12일
0

JUnit5

목록 보기
24/25
post-thumbnail

본 시리즈는 메타 코딩님의 Junit 강의를 학습한 내용을 바탕으로 정리하였습니다.

저번 포스팅을 끝으로 책 등록을 끝냈다. 이제 책 한건보기와 책 삭제, 수정하기 구현을 통해 Controller를 마무리하자.


책 한건보기

BookApiController.java

    // 3. 책한건보기
    @GetMapping("/api/v1/book/{id}")
    public ResponseEntity<?> getBookOne(@PathVariable Long id) {
        BookRespDto bookRespDto = bookService.책한건보기(id);
        return new ResponseEntity<>(CMRespDto.builder().code(1).msg("글 목록보기 성공").body(bookRespDto).build(),
                HttpStatus.OK); // 200 = ok
    }

정말 별 다를게 없다. 지금까지 우리가 했던 방식으로 코딩하면 된다. 이제 postman을 통해 테스트해보자.

책을 한 건 조회하기 위해서는 먼저 content가 담겨 있어야한다. title과 author의 내용을 추가하고 POST를 요청하자.

이제 우리가 저장했던 api/b1/book/1 의 주소를 GET을 통해 조회해보자.

위와 같이 책 한 건이 잘 조회되는 것을 볼 수 있다.


책 삭제하기

BookApiController.java

    // 3. 책한건보기
    // ..(생략)


    // 4. 책삭제하기
    @DeleteMapping("/api/v1/book/{id}")
    public ResponseEntity<?> deleteBook(@PathVariable Long id) {
        bookService.책삭제하기(id);
        return new ResponseEntity<>(CMRespDto.builder().code(1).msg("글 삭제하기 성공").body(null).build(),
                HttpStatus.OK); // 200 = ok
    }

삭제를 위해서 다음과 같이 POST 방식으로 책을 한 건 추가한다.

GET 요청을 통해 현재 book에 들어가있는 값을 조회해보면 다음과 같이 잘 들어가있는 것을 볼 수 있다. (ID가 3인 이유는 author 값에 오타가 나서 ID가 2인 값을 한 번 삭제 했다😅)

이제 DELETE 메소드를 통해 localhost:8080/api/v1/book/3 주소 값을 삭제한다. 즉, ID가 3인 레코드를 삭제하는 것이다. 다음과 같이 응답 메세지에 code는 1, msg에 글 삭제하기 성공, body 값은 null 값이 나오면 성공이다.

GET 통신으로 전체 book의 내용을 조회해보면 다음과 같이 ID가 3인 값이 잘 삭제된 것을 볼 수 있다.


책 수정하기

BookApiController.java

    @PutMapping("/api/v1/book/{id}")
    public ResponseEntity<?> updateBook(@PathVariable Long id, @RequestBody @Valid BookSaveReqDto bookSaveReqDto, BindingResult bindingResult) {
            
            if (bindingResult.hasErrors()) {
                Map<String, String> errorMap = new HashMap<>();
                for (FieldError fe : bindingResult.getFieldErrors()) {
                    errorMap.put(fe.getField(), fe.getDefaultMessage());
                }
                throw new RuntimeException(errorMap.toString());
            }
            
        BookRespDto bookRespDto = bookService.책수정하기(id, bookSaveReqDto);
        return new ResponseEntity<>(CMRespDto.builder().code(1).msg("글 수정하기 성공").body(bookRespDto).build(),
        HttpStatus.OK);    // 200 = ok
    }

책 수정하기 코드는 @PutMapping 메소드를 사용한다. 또한 URL 변수를 처리해줄 수 있는 @PathVariable 과 HTTP 요청 바디를 자바객체로 변환해주는 @RequestBody, Dto의 유효성 검사를 진행하기 위한 @Valid 어노테이션을 사용한다.
또한 전에 보았듯 유효성검사에서 필터링되지 않는 예외들을 예외처리해주는 것도 잊지 말아야한다.

이제 테스트 과정만 거치면 OK.

현재 book 객체에는 title 이 "스프링 1강", author 가 "장보고" 인 row 값이 하나 들어와 있다. 이를 수정해보자.

PUT 메소드로 설정한 후, Path는 localhost:8080/api/v1/book/1. titleauthor 는 각각 "스프링 5강" , "겟인데어" 로 수정해보자.

위와 같이 글 수정하기 성공 메세지가 뜨고 실제로 body값이 바뀐 것을 볼 수 있다.

profile
학습하며 도전하는 것을 즐기는 개발자

0개의 댓글