Skip to content

Latest commit

 

History

History
46 lines (27 loc) · 2.99 KB

rest_api_v2_ex_search_filter.adoc

File metadata and controls

46 lines (27 loc) · 2.99 KB

Поиск сущностей с фильтром

REST API даёт возможность искать экземпляры сущностей по определенным условиям.

Примеры мы рассмотрим на модели данных, состоящей из двух сущностей:

  • Author с двумя полями: lastName и firstName

  • Book с тремя полями: title (String), author (Author) и publicationYear (Integer)

Чтобы выполнить поиск с фильтром URL должен выглядеть следующим образом:

http://localhost:8080/app/rest/v2/entities/test$Book/search

Условия поиска должны быть переданы в параметре filter. filter - это JSON объект, который содержит набор условий поиска. Если поиск выполняется с помощью GET запроса, то параметр filter передается в URL.

Пример 1

Необходимо найти все книги, опубликованные в 2007 году с именем автора, начинающимся с "Alex". JSON фильтр для подобного условия будет выглядеть так:

link:../../../../source/rest/rest-entities-filter-ex1.json[role=include]

По умолчанию все критерии поиска применяются с условием И.

Данный пример также демонстрирует возможность использования вложенных свойств объекта (author.firstName).

Пример 2

Следующий пример показывает две вещи: как выполнять поиск с помощью POST запроса и как использовать группы ИЛИ. В случае POST все параметры должны быть переданы в JSON объекте в теле запроса. Условия поиска должны быть помещены в поле объекта с именем filter. Остальные параметры (имя view, количество выгружаемых сущностей и т.п.) должны быть помещены в поля объекта с соответствующими именами:

link:../../../../source/rest/rest-entities-filter-ex2.json[role=include]

В этом примере коллекция conditions содержит не только объекты с критериями поиска, но и группу ИЛИ (OR). Итоговое условие можно представить так:

((author.lastName contains Stev) OR (author.lastName = Duma) AND (publicationDate in [2007, 2008]))

Обратите внимание, что параметр view также передан в теле запроса.