Składnia filtrów
Niektóre endpointy API akceptują parametr where, który nakłada filtr na zbiór wyników.
Poniższe sekcje zawierają przykłady użycia filtrów oraz pełne odniesienie do składni.
Przykłady
info
Aby zobaczyć więcej praktycznych przykładów, spróbuj zastosować filtry do raportów na ahrefs.com, korzystając z naszego interfejsu wizualnego, a następnie kliknij przycisk API {}, aby wyświetlić parametr where wygenerowanego zapytania API v3.
Pole "foo" jest równe 3:
{ "field": "foo", "is": ["eq", 3] }
W przypadku pól typu obiekt użyj notacji z kropką, aby odwoływać się do pól zagnieżdżonych. Pole "bar", zagnieżdżone w polu "foo", jest równe 3:
{ "field": "foo.bar", "is": ["eq", 3] }
Pole całkowite "foo" jest równe 3, a pole całkowite "bar" jest mniejsze niż 10:
{
"and": [
{ "field": "foo", "is": ["eq", 3] },
{ "field": "bar", "is": ["lt", 10] }
]
}
Albo wartość pola tekstowego "foo" po zamianie na wielkie litery jest równa "AHREFS", albo wszystkie elementy tekstowe w polu tablicowym "bar" mają prefiks "Ahrefs" i sufiks "seo".
{
"or": [
{
"field": "foo",
"modifier": "uppercase",
"is": ["eq", "AHREFS"]
},
{
"field": "bar",
"list_is": {
"and": [
["prefix", "Ahrefs"],
["suffix", "seo"],
]
}
}
]
}
Dokumentacja języka
Składnia filtrów jest opisana przez poniższą gramatykę, wyrażoną w notacji w stylu BNF.
Term ujęty w nawiasy kątowe \< i > oznacza symbol. Symbol, po którym występuje +, oznacza niepustą tablicę zawierającą ten symbol. Znak ? poprzedzający pole obiektu oznacza, że pole jest opcjonalne.
Dwa symbole terminalne są zdefiniowane następująco:
\<field_alias>Alias pola filtra. Listę prawidłowych aliasów znajdziesz w dokumentacji danego endpointu. Pamiętaj, że parametryselectiwheremogą akceptować różne aliasy.\<value>Wartość JSON. Powinna odpowiadać typowi pola (lub modyfikatora pola, jeśli występuje).
Dozwolone wzorce w wyrażeniach filtrów regex różnią się w zależności od narzędzia.
- Keywords Explorer: Tylko
*jako operator wieloznaczny. - Site Explorer: składnia 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> }