GraphQL
Vikipedi, özgür ansiklopedi
Geliştirici(ler) | Facebook ve topluluk |
---|---|
İlk yayınlanma | 14 Eylül 2015 |
Güncel sürüm | Haziran 2018[1] |
Programlama dili | Implementations in Java, JavaScript, Ruby, Scala gerçekleştirmeleri, diğerleri. |
İşletim sistemi | Çapraz platform |
Resmî sitesi | graphql.org |
Kod deposu | github.com/graphql/graphql-spec |
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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]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
[değiştir | kaynağı değiştir]- ^ "GraphQL June 2018 Release Notes". 29 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Mart 2019.
- ^ "GraphQL: A query language for APIs". 17 Eylül 2015 tarihinde kaynağından arşivlendi.
- ^ "GraphQL: A data query language". 14 Eylül 2015. 5 Temmuz 2018 tarihinde kaynağından arşivlendi.
- ^ "Facebook's GraphQL gets its own open-source foundation". TechCrunch (İngilizce). 22 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2018.
- ^ "The Linux Foundation Announces Intent to Form New Foundation to Support GraphQL - The Linux Foundation". The Linux Foundation (İngilizce). 6 Kasım 2018. 28 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2018.
- ^ "Is GraphQL Moving Toward Ubiquity?". NordicAPIs. 8 Mart 2018. 30 Mayıs 2019 tarihinde kaynağından arşivlendi.
- ^ "GraphQL vs REST: Overview". Phil Sturgeon (İngilizce). 26 Nisan 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Kasım 2018.
- ^ "Why use GraphQL, good and bad reasons". Honest Engineering (İngilizce). 4 Ağustos 2018. 26 Kasım 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Kasım 2018.
- ^ "GraphQL Fundamentals". Howto GraphQL. 12 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Temmuz 2018.
- ^ "GraphQL". facebook.github.io. Facebook. 18 Temmuz 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Temmuz 2018.
- ^ "GraphQL js". 16 Ekim 2021. 13 Temmuz 2015 tarihinde kaynağından arşivlendi.
- ^ "GraphQL - Perl implementation of GraphQL". 21 Şubat 2018 tarihinde kaynağından arşivlendi.
- ^ "Graphene". graphene-python.org. 12 Ekim 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Haziran 2017.
- ^ graphql/libgraphqlparser, GraphQL, 27 Mayıs 2020, 22 Mayıs 2020 tarihinde kaynağından arşivlendi, erişim tarihi: 30 Mayıs 2020
- ^ "Absinthe: The GraphQL toolkit for Elixir". 5 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Temmuz 2018.
- ^ "Package graphqld on DUB". 18 Eylül 2020 tarihinde kaynağından arşivlendi.
- ^ "GraphQL SDL included in Github repository". 9 Şubat 2018 tarihinde kaynağından arşivlendi.
- ^ "Deviation Testing: A Test Case Generation Technique for GraphQL APIs". 11th International Workshop on Smalltalk Technologies (IWST): 1-9. 2018. Birden fazla yazar-name-list parameters kullanıldı (yardım); Yazar
|ad1=
eksik|soyadı1=
(yardım) - ^ "Automatic Property-based Testing of GraphQL APIs". 2021 IEEE/ACM International Conference on Automation of Software Test (AST). Madrid, Spain: IEEE: 1-10. May 2021. doi:10.1109/AST52587.2021.00009. ISBN 978-1-6654-3567-3. 15 Kasım 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Kasım 2022. Birden fazla yazar-name-list parameters kullanıldı (yardım); Yazar
|ad1=
eksik|soyadı1=
(yardım) - ^ "Harvesting Production GraphQL Queries to Detect Schema Faults". 2022 IEEE Conference on Software Testing, Verification and Validation (ICST). Valencia, Spain: IEEE: 365-376. April 2022. doi:10.1109/ICST53961.2022.00014. ISBN 978-1-6654-6679-0. 15 Kasım 2022 tarihinde kaynağından arşivlendi. Erişim tarihi: 15 Kasım 2022. Birden fazla yazar-name-list parameters kullanıldı (yardım); Yazar
|ad1=
eksik|soyadı1=
(yardım)