<aside> 1️⃣ REST 개념 설명
</aside>
REST(Representational State Transfer)**는 웹 서비스를 구현하는데 가장 널리 사용되는 아키텍처 스타일이다. REST는 자원 지향 아키텍처(ROA)로, 웹 서비스는 자원(Resource)을 중심으로 설계되고 이들 자원에 대해 CRUD(Create, Read, Update, Delete) 연산을 수행한다.
Spring Boot에서는 이러한 RESTful 웹 서비스를 구현하기 위해 @RestController
어노테이션을 사용합니다.
<aside> 2️⃣ Rest Controller 생성 예시
</aside>
public class Book {
private Long id;
private String title;
private String author;
// 생성자, getter, setter 생략...
}
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/books")
public class BookController {
private final BookService bookService; // 서비스 계층은 비즈니스 로직을 담당합니다.
public BookController(BookService bookService) {
this.bookService = bookService;
}
@GetMapping
public List<Book> getAllBooks() {
return bookService.getAllBooks();
}
@GetMapping("/{id}")
public Book getBook(@PathVariable Long id) {
return bookService.getBook(id);
}
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public Book createBook(@RequestBody Book book) {
return bookService.createBook(book);
}
@PutMapping("/{id}")
public Book updateBook(@PathVariable Long id, @RequestBody Book book) {
return bookService.updateBook(id, book);
}
@DeleteMapping("/{id}")
public void deleteBook(@PathVariable Long id) {
bookService.deleteBook(id);
}
}
getAllBooks()
: 이 메소드는 HTTP GET 요청을 "/books" URL에 매핑하고, 모든 책의 목록을 반환한다. @GetMapping
어노테이션은 이 메소드를 GET 요청에 매핑한다.getBook(Long id)
: 이 메소드는 특정 책을 반환한다. @PathVariable
어노테이션을 이용해 URL 경로의 일부인 책의 ID를 메소드 매개변수로 전달한다.createBook(Book book)
: 이 메소드는 새로운 책을 생성한다. @RequestBody
어노테이션을 사용해 HTTP 요청 본문을 Book 객체로 변환한다. @ResponseStatus(HttpStatus.CREATED)
어노테이션은 책이 성공적으로 생성되었을 때 HTTP 상태 코드 201(Created)를 반환하도록 지시한다.updateBook(Long id, Book book)
: 이 메소드는 특정 책의 정보를 수정한다. 여기서도 **@RequestBody
**와 @PathVariable
어노테이션을 사용하여 HTTP 요청 본문의 Book 객체와 URL 경로의 ID를 메소드 매개변수로 전달한다.deleteBook(Long id)
: 이 메소드는 특정 책을 삭제한다. URL 경로의 ID는 @PathVariable
어노테이션을 통해 메소드 매개변수로 전달된다.위의 컨트롤러는
BookService
클래스에 의존하고 있으며, 이는 비즈니스 로직을 처리하는 서비스 계층이다. 실제 애플리케이션에서는 이 계층이 데이터베이스와 상호 작용하게 될 것이다. 이렇게 함으로써, 우리는 Spring Boot에서 REST 컨트롤러를 이용해 CRUD 연산을 수행하는 방법을 알게 되었다.