GraphQL
GraphQL, web API'leri geliştirmek için bir yaklaşım sağlar. Bu özelliğiyle REST ve diğer web hizmeti mimarileriyle karşılaştırılabilir. GraphQL, istemcilerin talep ettikleri verilerin yapısını tanımlamasına olanak tanır ve veriler tanımlanan yapıda sunucudan döndürülür. Bu, aşırı büyük miktarda verinin döndürülmesini engeller ve sorgu sonuçlarının web'de önbelleğe alınmasını sekteye uğratabilir. Sorgu dilinin esnekliği ve zenginliği, basit API'ler için harcanılan efora değmeyecek kadar karmaşık olabilir.[6][7][8] Adına rağmen, GraphQL, Neo4j gibi tam teşekküllü bir grafik veritabanında veya hatta geçişli kapatmayı destekleyen SQL lehçelerinde bulunabilecek grafik işlemlerinin zenginliğini sağlamaz. Örneğin, bir bireyin ebeveynlerini bildiren bir GraphQL arayüzü, tek bir sorguda tüm atalarının kümesini döndüremez. GraphQL, bir tip sistemi, sorgulama dili ve yürütme semantiği, statik doğrulama ve tip iç gözleminden oluşur. Okumayı, yazmayı (değiştirmeyi) ve verilerdeki değişikliklere abone olmayı (gerçek zamanlı güncellemeler – en yaygın olarak Websockets kullanılarak uygulanır) destekler.[9] GraphQL sunucuları, Haskell, JavaScript,[10] Perl,[11] Python,[12] Ruby, Java, C++,[13] C#, Scala, Go, Rust, Elixir,[14] Erlang, PHP, R, D[15] ve Clojure dilleri dahil birçok programlama dilinde mevcuttur. Tek bir sorgunun sonucu JSON biçiminde döndürülür. GraphQL, 9 Şubat 2018'de Şema Tanımlama Dili (SDL) spesifikasyonun bir parçası oldu.[16] ÖrnekGÖNDERİ isteği: {
siparisler {
id
urunListesi {
urun {
ad
fiyat
}
miktar
}
toplamTutarAmount
}
}
Yanıt: {
"veri": {
"siparisler": [
{
"id": 1,
"urunListesi": [
{
"urun": {
"ad": "orange",
"fiyat": 1.5
},
"miktar": 100
}
],
"toplamTutar": 150
}
]
}
}
Deneme yapmaGraphQL API'leri, API uç noktasında farklı istekleri tetikleyerek ve yanıtın doğruluğunu onaylayarak test edilebilir. Bu işlem, geliştiriciler tarafından manuel olarak yapılabilir veya test araçlarıyla otomatik hale getirilebilir. Testlerin kendisi otomatik olarak da oluşturulabilir. Örneğin, mevcut bir test durumu tarafından tetiklenen bir istek, bir değişken oluşturmak için değişikliğe uğratılabilir[17] ve arama tabanlı teknikler aracılığıyla yeni istekler üretilebilir.[18] Yayındaki API uç noktasına ulaşan GraphQL istekleri, şemanın uygulanmasındaki hataları tespit eden test senaryoları oluşturmak için de kullanılabilir.[19] Kaynakça
Dış bağlantılar |