#6075: Фильтры в API запросах

Отредактирована: 188 дней назад

Симптомы

  • Как использовать фильтры в API запросах?
  • Как использовать фильтры в XML-RPC запросах?
  • Как фильтровать ответы в API?
  • Как использовать фильтр QueryFilterInfo filter в API?

Решение

В XML-RPC запросах можно указать фильтр QueryFilterInfo filter для того, чтобы сервер отфильтровал данные по нужным нам условиям. Фильтр имеет структуру:

{'query': 'поле оператор значение' }

Если фильтрация не нужна, то просто указываем пустой фильтр {}, например:

result = server.v1.firewall.rules.list(auth_token,0,10000,{})

Операторы в фильтре используются точно такие же, как и при поисковых запросах в веб-консоли.

ОператорОписаниеПример
=Равно. Требует полного совпадения значения поля указанному значениюserver.v1.firewall.rules.list(auth_token,0,10000,{'query': 'action = drop' })
!=Не равно. Значение указанного поля не должно совпадать с указанным значениемserver.v1.firewall.rules.list(auth_token,0,10000,{'query': 'action != drop' })
andЛогическое И, требует выполнение всех условий, заданных в запросеserver.v1.firewall.rules.list(auth_token,0,10000,{'query': 'name !~ vpn and name !~ untrusted' })
orЛогическое ИЛИ, требует выполнение одного из условий запросаserver.v1.firewall.rules.list(auth_token,0,10000,{'query': 'name !~ vpn or name !~ untrusted' })
>Больше. Значение поля должно быть больше указанного в запросе значения. Может быть применимо только для полей, поддерживающих сравненияserver.v1.firewall.rules.list(auth_token,0,10000,{'query':'pos > 3'})
>=Больше либо равно. Значение поля должно быть больше либо равны указанному в запросе значению. Может быть применимо только для полей, поддерживающих сравненияserver.v1.firewall.rules.list(auth_token,0,10000,{'query':'pos >= 3'})
<Меньше. Значение поля должно быть меньше указанного в запросе значения. Может быть применимо только для полей, поддерживающих сравненияserver.v1.firewall.rules.list(auth_token,0,10000,{'query':'pos < 3'})
<=Меньше либо равно. Значение поля должно быть меньше либо равны указанному в запросе значению. Может быть применимо только для полей, поддерживающих сравненияserver.v1.firewall.rules.list(auth_token,0,10000,{'query':'pos <= 3'})
inПозволяет указать несколько значений поля в запросеserver.v1.firewall.rules.list(auth_token,0,10000,{'query':'zoneSource in (trusted, dmz)'})
not inПозволяет указать несколько значений поля в запросе; будут отображены записи, не содержащие указанные значенияserver.v1.firewall.rules.list(auth_token,0,10000,{'query':'zoneSource not in (trusted, dmz)'})
~Содержит. Позволяет указать подстроку, которая должна находиться в указанном полеserver.v1.firewall.rules.list(auth_token,0,10000,{'query': 'name ~ vpn' })
!~Не содержит. Позволяет указать подстроку, которая не должна присутствовать в указанном полеserver.v1.firewall.rules.list(auth_token,0,10000,{'query': 'name !~ vpn' })

В фильтрах используются те же поля, что и в веб-консоли, а не поля, которые указаны в JSON-файле ответа на API запрос!

В веб-консоли список доступных полей можно получить нажав на значек вопроса в правой части строки поиска: