Я отправляю запрос с клиента, чтобы мне прислали товары в определенно порядке. в бэкенде отправляется запрос к базе данных.
у меня есть несколько вариантов сортировки:
- по убыванию цены
- по возрастанию цены
- по дате добавления
- по рейтингу
Вопрос: Как обозначить тип сортировки чтобы было как принято? Сгодится ли 1,2,3,4? Пришло на бэкенд 4 - значит отправляем запрос в базу данных "по рейтингу". Или лучше с клиента передавать строку сразу, что-то вроде "order by 'price'"? Или еще как-то по другому?
Передавайте индекс выражения сортировки. А по этому индексу - либо выполняйте соответствующий заранее полностью подготовленный запрос, либо стройте текст запроса на основании переданного индекса.
Передача части запроса, которая потом будет встроена в текст запроса - плохая идея, ибо чревато инъекцией. Условное выражение на основании переданного параметра этого недостатка лишено, но похоронит возможность использования индексов для сортировки, если они могут быть применены в частной форме запроса.
но индекс при этом совершенно не обязательно должен быть цифровой
никто не мешает вместо 1,2,3,4 написать price_desc, price_asc,date,rating
ну или отдельно сортировку и отдельно направление
FanatPHP, так я и не говорил, что индекс обязан быть числовым. Он должен быть распознаваем на стороне, которая общается с БД и, соответственно, уникален.