Skip to content

Параметры запроса для списка

Apostol Developer edited this page Jan 20, 2022 · 11 revisions

Для конечных точек возвращающих данные в виде списка - /<endpoint>/list и количества записей - /<endpoint>/count применимо единое правило и следующее параметры:

Имя Тип Значение Описание
fields JSON Массив строк Список полей. Если не указан, вернёт все доступные поля.
search JSON Массив объектов Условия для отбора данных.
filter JSON Объект Фильтр для отбора данных в виде пары ключ/значение. В качестве ключа указывается имя поля. filter является краткой формой search.
reclimit INTEGER Число Возвращает не больше заданного числа строк (может быть меньше, если сам запрос выдал меньшее количество строк). По умолчанию: 500. Что-бы отключить reclimit нужно передать значение <= 0. Для запросов /<endpoint>/count, условие reclimit: 0 добавляется автоматически.
recoffset INTEGER Число Пропускает указанное число строк в запросе.
orderby JSON Массив строк Порядок сортировки (список полей). Допустимо указание ASC и DESC (["field1", "field2 ASC", "field3 DESC"])

Расшифровка параметра search:

Ключ Тип Обязательный Описание
condition STRING НЕТ Условие. Может принимать только два значения AND (по умолчанию) или OR.
field STRING ДА Наименование поля, к которому применяется условие.
compare STRING НЕТ Сравнение. Может принимать только одно из значений: (EQL, NEQ, LSS, LEQ, GTR, GEQ, GIN, AND, OR, XOR, NOT, ISN, INN, LKE, IKE, SIM, PSX, PSI, PSN, PIN).
value STRING ДА/НЕТ Искомое значение.
valarr JSON ДА/НЕТ Искомые значения в виде массива. Если указан ключ valarr, то ключи compare и value игнорируются.
lstr STRING ( Левая скобка.
rstr STRING ) Правая скобка.

Формат compare:

Значение Описание
EQL Равно (по умолчанию).
NEQ Не равно.
LSS Меньше.
LEQ Меньше или равно.
GTR Больше.
GEQ Больше или равно.
GIN Для поиска вхождений JSON.
AND Битовый AND.
OR Битовый OR.
XOR Битовый XOR.
NOT Битовый NOT.
ISN IS NULL (если значение равно null). Ключ value должен быть опушен (не указан).
INN IS NOT NULL (если значение не равно null). Ключ value должен быть опушен (не указан).
LKE LIKE - Значение ключа value должно передаваться вместе со знаком % в нужном месте.
IKE ILIKE - Регистр-независимый LIKE.
SIM Регулярные выражения: SIMILAR TO
PSX Регулярное выражение POSIX: ~
PSI Регулярное выражение POSIX: ~*
PSN Регулярное выражение POSIX: !~
PIN Регулярное выражение POSIX: !~*

Примеры:

POST /api/v1/object/geolocation/list HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg

{"filter": {"object": "00000000-0000-4000-a000-000000000000", "code": "default"}}
POST /api/v1/address/list HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg

{"fields": ["description"], "search": [{"field": "apartment", "compare": "GEQ", "value": "5"}]}
POST /api/v1/admin/session/list HTTP/1.1
Host: localhost:8080
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.[сокращенно для краткости].NorYsi-Ht826HUFCEArVZ60_dEUmYiJYXubnTyweIMg

{"search": [{"field":"userid","value":"00000000-0000-4000-a001-000000000001", "lstr": "("},{"field":"userid","value":"00000000-0000-4000-a001-000000000002","condition":"OR", "rstr": ")"},{"field":"created","compare":"GEQ","value":"01.01.2022"},{"field":"created","compare":"LSS","value":"31.12.2022"}]}

Что эквивалентно следующему SQL-запросу:

SELECT *
  FROM api.session
 WHERE (userid = '00000000-0000-4000-a001-000000000001' OR userid = '00000000-0000-4000-a001-000000000002')
   AND created >= '01.01.2022'
   AND created < '31.12.2022'
 ORDER BY created DESC
 LIMIT 500
Clone this wiki locally