在构建处理资源的 RESTful api 时,可以通过一组动态参数进行查询,构建对数据库的查询的最佳方法是什么?
假设资源是一本书,可能的参数是:
author, year, publisher, pages, rating
您可以使用任意数量的参数和任意组合构建查询,例如:
/books?rating=2
或者
/books?author=james&year=2001&rating=4
或者
/books?year=2010&publisher=greatbooks&pages=100&rating=5
将这组动态参数转换为数据库查询的好方法是什么?
创建很多 if else 语句,例如:
if( isset($_GET['rating'] && isset($_GET['author']) ) {
//Do query based on these parameters here...
}
或者
if( isset($_GET['author'] && isset($_GET['year']) && isset($_GET['publisher']) ) {
//Do query based on these parameters here...
}
等等等等等等
或者设置所有变量,然后在查询中使用 LIKE 而不是 '=',如下所示:
if(!empty($_GET['author'])) {
$author = $_GET['author'];
} else {
$author = '%';
}
进而
SELECT * FROM books WHERE author LIKE $author ... and so on
还是有其他处理方法?