70 lines
2.2 KiB
Java
70 lines
2.2 KiB
Java
package com.baeldung.web;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.web.bind.annotation.CrossOrigin;
|
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.PutMapping;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
import com.baeldung.persistence.model.Book;
|
|
import com.baeldung.persistence.repo.BookRepository;
|
|
import com.baeldung.web.exception.BookIdMismatchException;
|
|
import com.baeldung.web.exception.BookNotFoundException;
|
|
|
|
import java.util.List;
|
|
|
|
@RestController
|
|
@RequestMapping("/api/books")
|
|
public class BookController {
|
|
|
|
@Autowired
|
|
private BookRepository bookRepository;
|
|
|
|
@GetMapping
|
|
public Iterable<Book> findAll() {
|
|
return bookRepository.findAll();
|
|
}
|
|
|
|
@GetMapping("/title/{bookTitle}")
|
|
public List<Book> findByTitle(@PathVariable String bookTitle) {
|
|
return bookRepository.findByTitle(bookTitle);
|
|
}
|
|
|
|
@GetMapping("/{id}")
|
|
public Book findOne(@PathVariable long id) {
|
|
return bookRepository.findById(id)
|
|
.orElseThrow(BookNotFoundException::new);
|
|
}
|
|
|
|
@PostMapping
|
|
@ResponseStatus(HttpStatus.CREATED)
|
|
public Book create(@RequestBody Book book) {
|
|
Book book1 = bookRepository.save(book);
|
|
return book1;
|
|
}
|
|
|
|
@DeleteMapping("/{id}")
|
|
public void delete(@PathVariable long id) {
|
|
bookRepository.findById(id)
|
|
.orElseThrow(BookNotFoundException::new);
|
|
bookRepository.deleteById(id);
|
|
}
|
|
|
|
@PutMapping("/{id}")
|
|
public Book updateBook(@RequestBody Book book, @PathVariable long id) {
|
|
if (book.getId() != id) {
|
|
throw new BookIdMismatchException();
|
|
}
|
|
bookRepository.findById(id)
|
|
.orElseThrow(BookNotFoundException::new);
|
|
return bookRepository.save(book);
|
|
}
|
|
}
|