카테고리 없음

REST API CRUD 코드 작성 #6

pan5158 2022. 10. 10. 21:24

저번 시간에는 SpringBoot설정으로 Swagger UI 연동을 하였습니다. 

 

이번 시간에는 Swagger UI 통해서 REST API 설계하여 개발을 진행하겠습니다. 

1. 등록 코드 작성하기

BookController.class

package com.sprint.controller;

import com.sprint.entity.Book;
import com.sprint.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired BookService bookService;

    // 등록
    @PostMapping("/add")
    public Book BookAdd(@ModelAttribute Book book){

        return bookService.bookSave(book);
    }
}
  • @RestController 어노테이션을 선언하여 모든 메소드에게 JSON 기능을 부여합니다.
  •  @Autowired 어토테이션 통해서 Service 의존성 주입을 합니다.
  • @PostMapping 어노테이션 통해서 경로를 찿아 값을 저장합니다.

BookService.class

package com.sprint.service;

import com.sprint.entity.Book;
import com.sprint.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@Service
@Transactional
public class BookService {

    @Autowired
    BookRepository bookRepository;

    public Book bookSave(Book book) {
        Book bookSave = bookRepository.save(book);

        return bookSave;
    }
}
  • @Service 어노테이션을 선언하여 비즈니스 로직 계층을 담당합니다.
  • @Transactional 어노테이션을 선언하여 메소드에게 commit과 rollback 기능을 부여합니다.
  • @Autowired 어노테이션 선언하여 BookRepository 의존성 주입을 합니다.
  • 매개 변수 값을 save() 메소드에 넣어 저장합니다.

Swagger UI 등록

Try it out >  컬럼 값 입력 후 Execute 클릭  

 

 

2. 조회 코드 작성하기

BookController.class

    // 목록 조회
    @GetMapping("/list")
    public List<Book> BookList(@ModelAttribute Book book){

        List<Book> list = bookService.findAll();

        return list;
    }
  • BookService findAll() 메소드에게 조회 출력 값을 요청합니다.

BookService.class

    public List<Book> findAll() {
        List<Book> list = bookRepository.findAll();

        return list;
    }
  • JpaRepository 인터페이스 findAll() 메소드 이용하여 전체 조회 값을 출력합니다.

Swagger UI 조회

Try it out >  Execute 클릭  

 

 

3. 상세 조회 코드작성하기

BookController.class

    // 상세 조회
    @GetMapping("/detail/{id}")
    public Optional<Book> BookDetail(@PathVariable("id") Long id){

        Optional<Book> detail = bookService.findById(id);

        return detail;
    }
  • 클라이언트에서 보낸 파라미터 값을 @PathVariable() 어노테이션으로 받습니다. 
  • 매개변수 id 값을 findById() 메소드에 넣어 조회합니다.

BookService.class

    public Optional<Book> findById(Long id) {
        Optional<Book> detail = bookRepository.findById(id);

        return detail;
    }
  • id 값을 매개변수로 받습니다. 
  • findById() 메소드에 id 값을 넣어 조회합니다.

Swagger UI 상세 조회

Try it out >  id 값 입력 >  Execute 클릭  

 

 

4. 수정 코드작성하기

BookController.class

    // 수정
    @PutMapping("/update")
    public Optional<Book> BookUpdate(@ModelAttribute Book book){

        Optional<Book> update = bookService.update(book);

        return update;
    }
  • @PutMapping 어노테이션 선언하여 update 기능 수행을 합니다.
  • 클라이언트 요청 값을 @ModelAttribute 어노테이션 매개변수로 받습니다.
  • BookService update 메소드에게 수정할 값을 보냅니다.

BookService.class

    public Optional<Book> update(Book book) {
        Book update = bookRepository.save(book);

        return Optional.of(update);
    }
  • 수정 요청 값을 매개 변수로 받습니다.
  • save() 메소드에 수정할 값을 넣어 저장합니다. 

Swagger UI 수정하기

Try it out >  값 수정 후  Execute 클릭  

 

 

5. 삭제 코드 작성하기

BookController.class

    @DeleteMapping("/delete/{id}")
    public Optional<Book> BookDelete(@PathVariable("id")Long id){

        Optional<Book> delete = bookService.delete(id);

        return delete;
    }
  • @DeleteMapping 어노테이션 선언하여 삭제 요청을 합니다.
  • @PathVariable()어노테이션 요청 값을 매개 변수로 받습니다.
  • BookService delete 메소드에 id 값을 보냅니다. 

BookService.class

    public Optional<Book> delete(Long id) {

        Optional<Book> book = bookRepository.deleteAllById(id);

        return book;
    }
  • 매개 변수 id 값을 받습니다.
  • deleteAllById() 메소드에 id 값을 넣어 삭제 처리를 합니다.

Swagger UI 삭제

Try it out >  id 값 입력 >  Execute 클릭