Witam, otóż próbuje sobie stworzyć mini web service RESTowy, który jest połączony jest z baza danych mysql.
Mam dwie klasy book i author. Oraz dwie 4 metody w kontrolerze:
@Controller
@RequestMapping("api")
public class BookController {
private BookService bookService;
private AuthorService authorService;
@Autowired
public void setBookService(BookService bookService) {
this.bookService = bookService;
}
@Autowired
public void setAuthorService(AuthorService authorService) {
this.authorService = authorService;
}
@RequestMapping(method = RequestMethod.GET, value = "/book")
public @ResponseBody
List<Book> getAllBooks() {
return bookService.listAllBook();
}
@RequestMapping(method = RequestMethod.GET, value = "/book/{id}")
public @ResponseBody
Book getBookById(@PathVariable Long id) {
return bookService.getBookById(id);
}
@RequestMapping(method = RequestMethod.GET, value = "/author")
public @ResponseBody
List<Author> getAllAuthors() {
return authorService.listAllAuthors();
}
@RequestMapping(method = RequestMethod.GET, value = "/author/{id}")
public @ResponseBody
Author getAuthorById(@PathVariable Long id) {
return authorService.getAuthorById(id);
}
}
Problem polega na tym, że metody działają prócz ten ostatniej, która zwraca błąd 500. Nie rozumiem za bardzo czemu. W załączeniu zrzuty jak to wygląda.
Drugie pytanie moje brzmi: otóż z tego co się dowiedziałem (jeżeli się mylę to proszę o wyprowadzenie mnie z błędu), że lepszym rozwiązaniem jest to, że np. kiedy zwracana jest lista książek. Każda książka ma autora, który z kolei ma imie, nazwisko itd. To dobrym wyjściem jest to, żeby nie był zwracany cały autor a link do niego. Jak to zrobić? Znalazłem coś takiego: http://www.baeldung.com/spring-hateoas-tutorial ale nie za bardzo wiem jak to zaimplementować, gdzie umieścić tworzenie linku w którym miejscu powinno się to znajdować.
https://github.com/MatDevCode