GraphQL, API'ler için açık kaynaklı bir veri sorgulama ve işleme dili ve bu sorguları yerine getirmek için yazılmış uygulamalardır.[2] GraphQL, 2012'de Facebook tarafından dahili olarak geliştirildi ve 2015'te herkese açık olarak yayınlandı.[3] GraphQL projesi 7 Kasım 2018'de, Facebook'tan kâr amacı gütmeyen Linux Vakfı bünyesindeki yeni kurulan GraphQL Vakfı'na devredildi.[4][5] 2012'den bu yana GraphQL'in yükselişi, GraphQL'in yaratıcısı Lee Byron tarafından belirlenen benimseme zaman çizelgesini yakından takip etti.[6] Byron'ın amacı, GraphQL'yi web platformlarında her yerde mevcut hale getirmektir.
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.[7][8][9] 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.[10] GraphQL sunucuları, Haskell, JavaScript,[11] Perl,[12] Python,[13] Ruby, Java, C++,[14] C#, Scala, Go, Rust, Elixir,[15] Erlang, PHP, R, D[16] 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.[17]
Örnek
GÖ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 yapma
GraphQL 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[18] ve arama tabanlı teknikler aracılığıyla yeni istekler üretilebilir.[19] 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.[20]
Kaynakça
Dış bağlantılar
|
---|
Güncel kullanımda | |
---|
Sahipli | |
---|
Yürürlükten kaldırıldı | |
---|