Передать стратегию поиска для фильтрации по остаточному URI

Первое использование 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

было бы хорошо.

Я не могу понять, как это настроить. Во всяком случае, для меня это шокирует, но это общее требование, похоже, вообще не задокументировано.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
50
1

Ответы 1

Файл CustomSearchFilter.php, расположенный в репозитории https://github.com/jordonedavidson/custom_search_filter, решает этот вариант использования, используя

/api/staff?lastname[start]=dav

синтаксис.

Файл был написан Кевином Дангласом (автором платформы Api) и представлен с его благословения.

Спасибо вам и Кевину Дангласу

NiniGeek 10.09.2020 14:47

Другие вопросы по теме