Skip to content

Пагинация, фильтрация и сортировка

Для указания сортировки и пагинации запроса используйте следующие query-параметры:

  • pagination.offset — смещение относительно начала отсортированного и отфильтрованного результативного набора данных.

    Например: 0 — для начала набора, 10 — начиная с 10-ой записи набора данных. Значение смещения — абсолютное и не может быть отрицательным числом.

  • pagination.limit - количество возвращаемых записей отсортированного и отфильтрованного результативного набора данных. Лимитирование используется всегда — если в запросе указывается 0, то все равно возвращается лимитированное значение записей, принятое по умолчанию (в разных сервисах это разное число).

  • pagination.order - конфигурация сортировки отфильтрованного результативного набора данных. При указании сортировки необходимо указать список полей сортировки, разделенных через запятую, например: "name, cost".

    • Сортировка может быть двух видов: по возрастанию (asc) и по убыванию (desc). Сортировка по умолчанию - asc. Можно задать порядок сортировки явно, указывая его тип через пробел после имени поля, например: "name asc, cost desc".
  • filter.attr - простое выражение фильтра для одиночного атрибута attr. Например, если необходимо поддержать фильтр для атрибута name, то необходимо использовать filter.name query-параметр.

    • Поиск для текстовых полей производится без учета регистра значения.
    • При поиске строк используется поиск по вхождению значения фильтра - то есть осуществляется не точный поиск. Например, для filter.name=alex будут отобраны записи "alexander" и "alexey".
    • Для кодов поиск всегда осуществляется точный поиск.

Пример URL запроса:

http://<api_gateway>/apis/projects/v1/projects?pagination.offset=30&pagination.limit=10&pagination.order=name desc&filter.name=john

В ответе в JSON будет присутствовать вложенный объект pagination с полным перечислением атрибутов limit, offset и order.

Ответ:

{
  "projects": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "createdBy": "string",
      "createdAt": "2022-09-18T05:47:59.478Z",
      "updatedAt": "2022-09-18T05:47:59.478Z"
    }
  ],
  "pagination": {
    "limit": 10,
    "offset": 30,
    "order": "name desc"
  }
}