Java REST获取带可选参数的API-设计和实现
在我的虚拟图书馆中有一个REST端点,列出我们在那里拥有的所有书籍:Java REST获取带可选参数的API-设计和实现,java,api,rest,get,Java,Api,Rest,Get,在我的虚拟图书馆中有一个REST端点,列出我们在那里拥有的所有书籍: @GetMapping(path = "/books") public List<Book> getBooks() { return bookService.findAllBooks(); } @GetMapping(path=“/books”) 公共列表getBooks(){ return bookService.findAllBooks(); } 他们说:“有时候我们想在从用户界
@GetMapping(path = "/books")
public List<Book> getBooks() {
return bookService.findAllBooks();
}
@GetMapping(path=“/books”)
公共列表getBooks(){
return bookService.findAllBooks();
}
他们说:“有时候我们想在从用户界面请求时按图书作者筛选该列表”
现在是:
@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”)
公共列表getBooks(
@RequestParam(value=“author”,required=false)字符串(author){
如果(我是空的(作者)){
return bookService.findAllBooks();
}否则{
return bookService.findBooksByAuthor(书名);
}
}
现在他们说:“现在我们希望能够过滤所有的书籍,有时也要按年度过滤”
所以我想。。。会不会变成:
@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();
}
}
@GetMapping(path=“/books”)
公共列表getBooks(
@RequestParam(value=“author”,required=false)字符串author,
@RequestParam(value=“year”,required=false)字符串年份){
if(isNotEmpty(author)){
return bookService.findBooksByAuthor(author);
}否则,如果(isNotEmpty(年)){
return bookService.findBooksByYear(年);
}否则{
return bookService.findAllBooks();
}
}
如果以后他们要求更多可选参数,我是应该将此API拆分为单独的端点,还是发明一些复杂而智能的搜索?
你会怎么做?对于那些感兴趣的人,我决定不把它做得像java会议的解决方案一样酷。 因此,解决办法是:
Example bookExample=Example.of(probe,ExampleMatcher.matchingAll())
org.springframework.data.repository.query.QueryByExampleExecutor#findAll(org.springframework.data.domain.Example)
例如bookRepository.findAll(bookExample)
答对了。对于那些感兴趣的人,我决定不让它像java会议的解决方案那样太酷。 因此,解决办法是:
Example bookExample=Example.of(probe,ExampleMatcher.matchingAll())
org.springframework.data.repository.query.QueryByExampleExecutor#findAll(org.springframework.data.domain.Example)
例如bookRepository.findAll(bookExample)
答对了。查看此网站:它为您面临的确切问题提供了一个很好的教程x@BankBuilder查看此网站:它为您面临的确切问题提供了一个很好的教程x@BankBuilder