Фильтрация позволяет ограничивать набор возвращаемых записей по заданным условиям.
Для этого используется параметр $filter.
Фильтрация выполняется на стороне сервера, что позволяет уменьшить объём передаваемых данных и ускорить обработку результата.
Например, можно получить проекты с определённым названием:
GET https://api.timetta.com/odata/Projects?$filter=name eq 'Business Process Optimization'
Пример ответа:
{
"value": [
{
"name": "Business Process Optimization",
"id": "2fa44ea0-df3b-47f0-bc62-fea3554c6c3c",
"modified": "2022-09-04T11:06:03.775347Z"
}
]
}
Timetta API поддерживает стандартные операторы OData:
| Оператор | Описание |
|---|---|
eq |
равно |
ne |
не равно |
gt |
больше |
ge |
больше или равно |
lt |
меньше |
le |
меньше или равно |
Пример:
GET https://api.timetta.com/odata/Projects?$filter=modified gt 2022-01-01T00:00:00Z
Будут возвращены проекты, изменённые после указанной даты.
Условия можно комбинировать.
Поддерживаются:
andornotПример:
GET https://api.timetta.com/odata/Projects?$filter=name ne null and modified gt 2022-01-01T00:00:00Z
Запрос вернёт проекты, у которых заполнено название и дата изменения больше указанной.
Часто фильтрация используется по связанным сущностям.
Например, получить проекты конкретного руководителя:
GET https://api.timetta.com/odata/Projects?$filter=managerId eq 'bcd753cc-0b80-47ae-a471-6ff7f06010e1'
Это позволяет получать связанные данные без дополнительной обработки на стороне клиента.
Примечание
При фильтрации по значениям типа Guid рекомендуется передавать значение в одинарных кавычках.
Пример:
$filter=id eq '2fa44ea0-df3b-47f0-bc62-fea3554c6c3c'
Timetta API позволяет выполнять фильтрацию не только по собственным полям сущности, но и по полям связанных объектов.
Например, сущность Project содержит навигационное свойство manager.
Можно получить проекты, у которых имя руководителя начинается с Ace:
GET https://api.timetta.com/odata/Projects?$filter=startswith(manager/name,'Ace')
Пример ответа:
{
"value": [
{
"name": "Business Process Optimization",
"id": "2fa44ea0-df3b-47f0-bc62-fea3554c6c3c",
"manager": {
"name": "Ace Fry",
"id": "bcd753cc-0b80-47ae-a471-6ff7f06010e1"
}
}
]
}
Для доступа к полю связанной сущности используется путь через символ /.
Например:
manager/namemanager/iddepartment/nameПримечание
Фильтрация по связанным сущностям особенно полезна, когда идентификатор связанного объекта неизвестен, но доступны его атрибуты.
Для строковых полей доступны функции OData.
Поиск по началу строки:
GET https://api.timetta.com/odata/Projects?$filter=startswith(name,'Business')
Поиск по окончанию строки:
GET https://api.timetta.com/odata/Projects?$filter=endswith(name,'Optimization')
Поиск по вхождению:
GET https://api.timetta.com/odata/Projects?$filter=contains(name,'Process')
Примечание
Строковые функции особенно полезны для реализации поиска.
Можно проверять наличие значения:
GET https://api.timetta.com/odata/Projects?$filter=managerId eq null
Или наоборот:
GET https://api.timetta.com/odata/Projects?$filter=managerId ne null
Фильтрация может использоваться вместе с $select, $expand, $top, $skip и $orderby.
Пример:
GET https://api.timetta.com/odata/Projects?$filter=contains(name,'Business')&$select=id,name,modified&$orderby=modified desc&$top=10
Такой запрос:
При использовании фильтрации рекомендуется:
Перейти на русскую версию?