GraphQL Sorgu Dili ve AST Mantığı
**GraphQL**, API'ler için geliştirilmiş güçlü bir sorgu dili ve bu sorguları sunucu tarafında çalıştırmak için tasarlanmış bir çalışma zamanıdır (runtime). Facebook tarafından REST API'lerin getirdiği verimsizlikleri çözmek için geliştirilmiştir.
GraphQL Sorgu Örneği
\\`graphql
query GetUser {
user(id: "123") {
name
posts {
title
}
}
}
\\`
GraphQL AST (Soyut Sözdizimi Ağacı) Nedir?
GraphQL sorguları çalıştırılmadan önce sunucu tarafından ayrıştırılarak bir **Abstract Syntax Tree (AST)** yapısına dönüştürülür. AST:
JSONFlow üzerinde GraphQL sorgularınızı görselleştirdiğinizde, arka plandaki bu AST yapısı doğrudan expandable bir ağaç haline getirilerek analiz etmeniz kolaylaştırılır.
Sorgu, Şema ve Çözümleyici İlişkisi
GraphQL sorgusu yalnızca istenen alanları tarif eder; hangi verinin nereden geleceğini sunucudaki resolver fonksiyonları belirler. Şema, istemci ile sunucu arasındaki sözleşmedir. Alanın nullable olup olmaması, hata durumunda sonucun ne kadarının null olacağını doğrudan etkiler.
AST Neden Önemlidir?
Parser sorguyu alanlar, argümanlar, fragment'lar ve direktiflerden oluşan bir ağaca dönüştürür. Biçimlendiriciler ve statik analiz araçları metni değiştirmek yerine bu ağacı kullanır. Böylece yorumlama, yeniden sıralama ve doğrulama işlemleri sözdizimini bozmadan yapılabilir.
Üretim Kontrol Listesi
Sorgu derinliğini ve maliyetini sınırlandırın, N+1 sorgularını DataLoader benzeri toplulaştırma yaklaşımıyla azaltın ve kullanıcı girdilerini resolver katmanında yetkilendirin. İstemcide yalnızca ihtiyaç duyulan alanları seçmek ağ yükünü azaltır ancak sunucu tarafı erişim kontrolünün yerini tutmaz.