Синтаксис фільтрів
Деякі ендпоїнти API приймають параметр where, який застосовує фільтр до набору результатів.
У наступних розділах наведено приклади використання фільтрів і повний довідник із синтаксису.
Приклади
info
Щоб побачити більше прикладів із реальних сценаріїв, спробуйте застосувати кілька фільтрів до звіту на ahrefs.com у нашому візуальному інтерфейсі, а потім натисніть кнопку API {} — так ви побачите параметр where у згенерованому запиті API v3.
Поле "foo" дорівнює 3:
{ "field": "foo", "is": ["eq", 3] }
Для полів типу object використовуйте крапкову нотацію, щоб звертатися до вкладених полів. Поле "bar", вкладене в поле "foo", дорівнює 3:
{ "field": "foo.bar", "is": ["eq", 3] }
Цілочисельне поле "foo" дорівнює 3, а цілочисельне поле "bar" менше за 10:
{
"and": [
{ "field": "foo", "is": ["eq", 3] },
{ "field": "bar", "is": ["lt", 10] }
]
}
Або значення рядкового поля "foo", перетворене на верхній регістр, дорівнює "AHREFS", або всі рядкові елементи в масиві поля "bar" мають префікс "Ahrefs" і суфікс "seo".
{
"or": [
{
"field": "foo",
"modifier": "uppercase",
"is": ["eq", "AHREFS"]
},
{
"field": "bar",
"list_is": {
"and": [
["prefix", "Ahrefs"],
["suffix", "seo"],
]
}
}
]
}
Довідник з мови запитів
Синтаксис фільтрів описано такою граматикою у нотації у стилі BNF.
Термін, узятий у кутові дужки \< і >, позначає символ. Символ, після якого стоїть +, означає непорожній масив, що містить цей символ. ? перед полем об’єкта означає, що це поле необов’язкове.
Два термінальні символи визначено так:
\<field_alias>Псевдонім поля фільтра. Перелік допустимих псевдонімів дивіться в документації відповідного ендпоїнта. Зверніть увагу: параметриselectіwhereможуть приймати різні псевдоніми.\<value>Значення JSON. Воно має відповідати типу поля (або типу модифікатора поля, якщо він заданий).
Дозволені шаблони у виразах фільтрації regex відрізняються залежно від інструмента.
- Keywords Explorer: Лише
*як оператор підстановки. - Site Explorer: синтаксис RE2.
\<bool_filter> ::= { "and" : \<bool_filter>+ }
| { "or" : \<bool_filter>+ }
| { "not" : \<bool_filter> }
| \<expr>
\<expr> ::= {
"field" : \<field_alias>,
? "is": \<condition>,
? "list_is": \<list_condition>
}
\<condition> ::= [ "eq", \<value> ]
| [ "neq", \<value> ]
| [ "gt", \<value> ]
| [ "gte", \<value> ]
| [ "lt", \<value> ]
| [ "lte", \<value> ]
| [ "substring", \<value> ]
| [ "isubstring", \<value> ]
| [ "phrase_match", \<value> ]
| [ "iphrase_match", \<value> ]
| [ "prefix", \<value> ]
| [ "suffix", \<value> ]
| [ "regex", \<value> ]
| "empty"
| "is_null"
\<condition_bool_filter> ::= { "and" : \<condition_bool_filter>+ }
| { "or" : \<condition_bool_filter>+ }
| { "not" : \<condition_bool_filter> }
| \<condition>
\<list_condition> ::= { "any" : \<condition_bool_filter> }
| { "all" : \<condition_bool_filter> }