время подумать о том, как написать аккуратный код, ах!
У меня была конечная точка REST в моей виртуальной библиотеке, чтобы перечислить все книги, которые у нас есть:
@GetMapping(path = "/books")
public List<Book> getBooks() {
return bookService.findAllBooks();
}
Они сказали: «Привет, javanewbie! Иногда мы хотим отфильтровать этот список по автору книги при запросе из пользовательского интерфейса».
Я сказал: «Хорошо», теперь это:
@GetMapping(path = "/books")
public List<Book> getBooks(
@RequestParam(value = "author", required = false) String author) {
if (isEmpty(author)) {
return bookService.findAllBooks();
} else {
return bookService.findBooksByAuthor(bookName);
}
}
Теперь они говорят: "эй, теперь мы хотим иметь возможность фильтровать все книги иногда по годам"
Поэтому я подумал ... Эмм, это станет как:
@GetMapping(path = "/books")
public List<Book> getBooks(
@RequestParam(value = "author", required = false) String author,
@RequestParam(value = "year", required = false) String year) {
if (isNotEmpty(author)) {
return bookService.findBooksByAuthor(author);
} else if (isNotEmpty(year)) {
return bookService.findBooksByYear(year);
} else {
return bookService.findAllBooks();
}
}
если позже они попросят больше необязательных параметров - я должен разделить этот API на отдельные конечные точки или придумать какой-нибудь сложный и интеллектуальный поиск?
Как бы вы пошли сюда?