Первое использование API-платформы и Symfony 4 для создания API-интерфейса для базы данных MySQL.
Я обновляю старый интерфейс поиска для базы данных, для которой мне нужно воспроизвести многие параметры поиска. Это включает в себя возможность поиска в заданном поле с использованием различных операторов/стратегий сопоставления. например начинается с, содержит точно равные и т. д.
Я настроил все для API с помощью аннотаций.
Аннотация @ApiFilter(SearchFilter::class, properties = {"fieldname": "strategy"} в моем классе таблицы работает так, как задумано, но я ограничен одной и только одной стратегией для каждого поля. Мне нужно иметь возможность чтобы передать стратегию функции поиска API в URL-адресе. что-то вроде:
/api/staff?lastname[start]=dav
или
/api/staff?lastname=david&match=contains
или
/api/staff/lastname/son?searchtype=end
было бы хорошо.
Я не могу понять, как это настроить. Во всяком случае, для меня это шокирует, но это общее требование, похоже, вообще не задокументировано.




Файл CustomSearchFilter.php, расположенный в репозитории https://github.com/jordonedavidson/custom_search_filter, решает этот вариант использования, используя
/api/staff?lastname[start]=dav
синтаксис.
Файл был написан Кевином Дангласом (автором платформы Api) и представлен с его благословения.
Спасибо вам и Кевину Дангласу