В настоящее время я создаю REST API, в котором я хочу, чтобы клиенты могли легко фильтровать большинство свойств определенного объекта. Используя QueryDSL в сочетании с Spring Data REST (пример Оливера Гирке) позволяет мне легко получить до 90% того, что я хочу, разрешив клиентам фильтровать, объединив параметры запроса, которые относятся к свойства (например, /users?firstName=Dennis&lastName=Laumen
).
Я даже могу настроить сопоставление между параметрами запроса и свойствами сущности, реализовав интерфейс QuerydslBinderCustomizer
(например, для запросов, нечувствительных к регистру или неполных строк). Все это здорово, однако я также хочу, чтобы клиенты могли фильтровать некоторые типы с использованием диапазонов. Например, в отношении свойства, подобного дате рождения, я хотел бы сделать что-то вроде следующего: /users?dateOfBirthFrom=1981-1-1&dateOfBirthTo=1981-12-31
. То же самое относится к свойствам, основанным на количестве, /users?idFrom=100&idTo=200
. У меня такое ощущение, что это возможно с использованием интерфейса QuerydslBinderCustomizer
, но интеграция между этими двумя библиотеками не документируется очень широко.
Заключение, возможно ли это с помощью Spring Data REST и QueryDSL? Если да, то как?