【发布时间】:2013-02-26 23:59:58
【问题描述】:
在构建处理资源的 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
或者有什么其他的方法可以解决这个问题?
【问题讨论】: