Как обрабатывать динамическое число параметров в querystring при создании REST api?

При создании 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 

Что считается хорошим способом преобразования этого динамического набора параметров в запрос базы данных?

Создание LOT if 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... } 

etc etc etc …

Или задав все переменные, а затем используя LIKE вместо '=' в следующем запросе:

 if(!empty($_GET['author'])) { $author = $_GET['author']; } else { $author = '%'; } 

а потом

 SELECT * FROM books WHERE author LIKE $author ... and so on 

Или есть какой-то другой способ справиться с этим?