Не могли бы вы помочь мне и объяснить, как я должен передать значение автора?
@GetMapping(value = "/search")
public ResponseEntity<List<Book>> searchBooksByTitleAndAuthor(
@RequestParam(value = "title", required = false) final String title,
@RequestParam(value = "author", required = false) final Author author) {
HttpStatus httpStatus = HttpStatus.OK;
List<Book> books = null;
if (title == null && author == null) {
log.info("Empty request");
httpStatus = HttpStatus.BAD_REQUEST;
} else if (title == null || author == null) {
books = bookService.getBooksByTitleOrAuthor(title, author);
} else {
Optional<Book> book = bookService.getBookByTitleAndAuthor(title, author);
if (book.isPresent()) {
books = Arrays.asList(book.get());
}
}
if (books == null) {
return new ResponseEntity<>(httpStatus);
} else {
return new ResponseEntity<>(books, httpStatus);
}
}
И Author
класс, который выглядит следующим образом:
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
public final class Author {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
private String name;
private LocalDate dateOfBirth;
private String bio;
}
Это хороший подходиспользовать author или @RequestParam вместо тела запроса в этой ситуации?Я думал о том, чтобы запросить только строку, которая является именем автора, но это повлияет на методы службы.