Filtre sözdizimi
Bazı API uç noktaları, sonuç kümesine bir filtre uygulayan where parametresini kabul eder.
Aşağıdaki bölümler, filtre kullanımına dair bazı örnekler ve eksiksiz bir sözdizimi referansı sunar.
Örnekler
info
Daha gerçekçi örnekler için, görsel arayüzümüzü kullanarak ahrefs.com’daki bir Raporlar üzerinde bazı filtreler uygulayın; ardından oluşturulan API v3 sorgusunun where parametresini görmek için API {} düğmesine basın.
"foo" alanı 3’e eşittir:
{ "field": "foo", "is": ["eq", 3] }
Nesne türündeki alanlar için, iç içe alanlara referans vermek üzere nokta gösterimini kullanın. "foo" alanının altında iç içe yer alan "bar" alanı 3’e eşittir:
{ "field": "foo.bar", "is": ["eq", 3] }
Tamsayı alanı "foo" 3’e eşittir ve tamsayı alanı "bar" 10’dan küçüktür:
{
"and": [
{ "field": "foo", "is": ["eq", 3] },
{ "field": "bar", "is": ["lt", 10] }
]
}
Ya dize alanı "foo"’nun büyük harfe çevrilmiş değeri "AHREFS"’e eşittir ya da dizi alanı "bar" içindeki tüm dize öğeleri "Ahrefs" önekine ve "seo" sonekine sahiptir.
{
"or": [
{
"field": "foo",
"modifier": "uppercase",
"is": ["eq", "AHREFS"]
},
{
"field": "bar",
"list_is": {
"and": [
["prefix", "Ahrefs"],
["suffix", "seo"],
]
}
}
]
}
Dil referansı
Filtre sözdizimi, BNF tarzı gösterimle ifade edilen aşağıdaki gramerle açıklanır.
Açılı ayraçlar \< ve > içine alınan bir terim, bir sembolü ifade eder. Ardından + gelen bir sembol, sembolü içeren boş olmayan bir diziyi ifade eder. Bir nesne alanından önce gelen ?, bu alanın isteğe bağlı olduğunu belirtir.
İki terminal sembol aşağıdaki gibi tanımlanmıştır:
\<field_alias>Bir filtre alanı takma adı. Geçerli takma adların listesi için ilgili uç noktanın dokümantasyonuna bakın.selectvewhereparametrelerinin farklı takma adları kabul edebileceğini unutmayın.\<value>Bir JSON değeri. Alan türüyle (veya bir değiştirici varsa alanın değiştiricisinin türüyle) eşleşmelidir.
Regex filtre ifadelerinde izin verilen desenler, kullanılan araca göre değişir.
- Keywords Explorer: Joker operatörü olarak yalnızca
*. - Site Explorer: RE2 sözdizimi.
\<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> }