GraphQL API, daha belirli ve esnek sorgular kullanarak tam olarak ihtiyacınız olan verileri almanızı sağlayan bir araçtır. GraphQL API’nin ana faydalarından biri, tek bir istek kullanarak birçok farklı kaynak elde edebilmenizdir.
Crowdin GraphQL API’sine karşı sorgu çalıştırmak istediğiniz durumlarda, yardımı ile uygulamanızda herhangi bir kod yazmadan önce bile Crowdin Enterprise web kullanıcı arayüzünden sorgular oluşturabileceğiniz, deneyebileceğiniz ve hata ayıklayabileceğiniz GraphQL Playground uygulamasını kullanmanızı öneririz.
Crowdin Enterprise’da GraphQL API ile çalışmak için aşağıdaki erişim belirteçlerinden birini kullanın:
İsteklerinizde aşağıdaki başlığı kullandığınızdan emin olun:
Yetkilendirme: Taşıyıcı <ACCESS_TOKEN>
Yetkilendirmenin başarısız olması durumunda yanıt:
401 Yetkisiz
{
"error": {
"message": "Yetkisiz",
"code": 401
}
}
REST API’nin aksine, GraphQL API, gerçekleştirilen işlemlere bağlı olmaksızın sabit kalan sadece bir uç noktaya sahiptir.
GraphQL uç noktası:
https://{domain}.api.crowdin.com/api/graphql
Crowdin GraphQL API, Crowdin sunucularına aşırı veya kötüye kullanım amaçlı çağrıları önlemek için sınırlamalara sahiptir.
Tüm GraphQL API çağrıları, şema doğrulamasını geçmek için aşağıdaki gereksinimlere uymak zorundadır:
ilk
veya son
bağımsız değişkenini sağlamak zorundadır.İlk
ve son
değerleri 1-10.000 arasında olmak zorundadır.Aşağıdaki örneklerde, bir çağrıdaki düğümlerin nasıl hesaplandığını gözden geçirebilirsiniz.
Basit sorgu:
query {
viewer {
projects(first: 50) {
edges {
node {
name
files(first: 10) {
totalCount
edges {
node {
name
type
}
}
}
}
}
}
}
}
Hesaplama:
50 = 50 proje
+
50 x 10 = 500 dosya
= 550 toplam düğüm
Karmaşık sorgu:
query {
viewer {
projects(first: 50) {
edges {
node {
files(first: 20) {
edges {
node {
strings(first: 10) {
edges {
node {
... on PlainSourceString {
text
}
... on ICUSourceString {
text
}
... on PluralSourceString {
plurals {
one
other
}
}
... on AssetSourceString {
text
}
}
}
}
}
}
}
translations(first: 20, languageId: "tr") {
edges {
node {
... on PlainStringTranslation {
text
}
... on ICUStringTranslation {
text
}
... on PluralStringTranslation {
pluralForm
text
}
... on AssetStringTranslation {
text
}
}
}
}
}
}
}
}
}
Hesaplama:
50 = 50 proje
+
50 x 20 = 1.000 dosya
+
50 x 20 x 10 = 10.000 dizgi
+
50 x 20 = 1.000 çeviri
= 12.050 toplam düğüm
GraphQL API sınırı, REST API için ayarlanan fiyat sınırlarına kıyasla oldukça farklıdır.
Yukarıda bahsedildiği gibi, sadece bir GraphQL çağrısı kullanarak ve birden çok REST çağrısı yürütme ihtiyacını değiştirerek aynı miktarda veri alabilirsiniz. Tek bir karmaşık GraphQL çağrısı, binlerce REST isteğine eşdeğer olabilir ve REST API fiyat sınırını aşamazken, hesaplaması Crowdin sunucuları için aynı derecede pahalı olabilir.
GraphQL API, bir çağrının fiyat sınırı skorunu hesaplayarak bir sorgunun sunucu maliyetini tam olarak göstermek için normalleştirilmiş bir puan ölçeği kullanır. Bu skor, bir ana bağlantı ve alt bağlantısındaki ilk ve son bağımsız değişkenleri içerir.
ilk
ve son
bağımsız değişkenlerini kullanır.GraphQL API fiyat sınırı saatte 5.000 puana ayarlanmıştır. GraphQL API ve REST API farklı fiyat sınırları kullandığından, saatte 5.000 puan, saatte 5.000 çağrı ile aynı değildir.
GraphQL API’sini kullanırken fiyat sınırı durumunu denetlemek için rateLimit
nesnesindeki alanları sorgulayın:
query {
viewer {
username
}
rateLimit {
limit
cost
remaining
resetAt
}
}
limit
– 60 dakikalık bir aralıkta kullanıcının tüketmesine izin verilen en fazla puan sayısını döndürür.cost
– fiyat sınırına göre şu anki çağrı için puan maliyetini döndürür.remaining
– şu anki fiyat sınırı aralığında kalan puan sayısını döndürür.resetAt
– UTC dönemi saniye cinsinden şu anki fiyat aralığının sıfırlandığı zamanı döndürür.rateLimit
nesnesini sorgulamak size bir çağrının puanını verebilirken, sınıra göre sayılır. Bu duruma geçici bir çözüm bulmak için bir çağrının puanını önceden tahmin edebilirsiniz. Aşağıdaki hesaplamayı kullanarak, rateLimit { cost }
tarafından döndürülen maliyetle yaklaşık olarak aynı maliyeti elde edebilirsiniz.
ilk
veya son
bağımsız değişken sınırlarına ulaşacağını varsayalım.İşte örnek bir sorgu ve skor hesaplaması:
query {
viewer {
username
projects(first: 100) {
edges {
node {
id
files(first: 50) {
edges {
node {
id
strings(first: 60) {
edges {
node {
... on PlainSourceString {
id
text
}
... on ICUSourceString {
id
text
}
... on PluralSourceString {
id
plurals {
one
other
}
}
... on AssetSourceString {
id
text
}
}
}
}
}
}
}
}
}
}
}
}
Şimdi, 5.101 toplamını 100’e bölün ve yuvarlayın. Sonuç olarak, 51 olan sorgunun son skorunu alırsınız.