카테고리 없음
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 클릭