Фильтры на выборки
Запросы на получение списка сущностей поддерживают возможность применения следующих фильтров:
- по соответствию поля заданному значению, например
status=created - по массиву значений:
status[]=created&status[]=completed - с применением операторов сравнения:
| Оператор | Описание | Типы значений | Пример |
|---|---|---|---|
| _eq | равно | все типы | status[_eq]=created, эквивалент status=created |
| _ne | не равно | все типы | status[_ne]=created |
| _gt | строго больше | int, float | amount[_gt]=1000 |
| _ge | больше или равно | int, float | amount[_ge]=1000 |
| _lt | строго меньше | int, float | amount[_lt]=1000 |
| _le | меньше или равно | int, float | amount[_le]=1000 |
| _start | начинается с | string | name[_start]=John |
Сортировки выборок
Для сортировки данных используется параметр _order. Ключ — имя свойства объекта,
а значение - порядок сортировки. Сортировку можно проводить по нескольким полям, например:
_order[categoryId]=asc&_order[name]=desc
Постраничный вывод
Постраничность задают два параметра с подчёркиванием: _pageSize — сколько элементов на странице, и
_page — номер страницы, например _pageSize=5&_page=2. Без _pageSize на странице 30 элементов.
Важно
Подчёркивание обязательно. Параметры page и pageSize без него API молча игнорирует: в ответ
приходит первая страница с тридцатью элементами, и metaData.page остаётся равным 1. Если вы
листаете выборку в цикле, сверяйте metaData.page с запрошенным номером — иначе цикл будет читать
одну и ту же страницу.
GET /v3/filter/api/order/order?_pageSize=5&_page=2
Формат ответа выборки
Выборка отвечает не массивом, а объектом с тремя свойствами:
{
"data": [ /* найденные объекты */ ],
"metaData": {
"totalCount": 5965,
"page": 1,
"pageSize": 30
},
"extendedData": []
}
data— сами объекты; когда ничего не нашлось, это пустой массив, а не отсутствующее поле;metaData.totalCount— сколько записей подходит под фильтр целиком, а не на текущей странице: по нему считают число страниц;metaData.pageиmetaData.pageSize— что сервер понял из запроса. Это же и проверка: если вы просили вторую страницу, а в ответеpage: 1, значит параметры не приняты (частая причина — забытое подчёркивание);extendedData— служебное поле, у выборок заказов пустое.
Разбирать ответ нужно именно так: response.data, а не сам ответ как массив. Это общий формат всех
выборок — заказов, возвратов, отгрузок, счетов.