При создании 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
Или есть какой-то другой способ справиться с этим?