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. GraphQL, 2012'de Facebook tarafından dahili olarak geliştirildi ve 2015'te herkese açık olarak yayınlandı. GraphQL projesi 7 Kasım 2018'de, Facebook'tan kâr amacı gütmeyen Linux Vakfı bünyesindeki yeni kurulan GraphQL Vakfı'na devredildi. 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. Byron'ın amacı, GraphQL'yi web platformlarında her yerde mevcut hale getirmektir.
Geliştirici(ler) | Facebook ve topluluk |
---|---|
İlk yayınlanma | 14 Eylül 2015 |
Güncel sürüm | Haziran 2018 |
Programlama dili | Implementations in , JavaScript, Ruby, gerçekleştirmeleri, diğerleri. |
İşletim sistemi | Çapraz platform |
Resmî sitesi | graphql.org |
Kod deposu | github.com/graphql/graphql-spec |
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. 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. GraphQL sunucuları, Haskell, JavaScript,Perl,Python,Ruby, Java, ,C#, Scala, Go, Rust, Elixir,Erlang, PHP, R, D 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.
Ö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 ve arama tabanlı teknikler aracılığıyla yeni istekler üretilebilir. 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.
Kaynakça
- ^ . 29 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Mart 2019.
- ^ . 17 Eylül 2015 tarihinde kaynağından arşivlendi.
- ^ . 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 . Erişim tarihi: 7 Kasım 2018.
- ^ . The Linux Foundation (İngilizce). 6 Kasım 2018. 28 Ocak 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Kasım 2018.
- ^ . 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 . Erişim tarihi: 25 Kasım 2018.
- ^ . Honest Engineering (İngilizce). 4 Ağustos 2018. 26 Kasım 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Kasım 2018.
- ^ . Howto GraphQL. 12 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Temmuz 2018.
- ^ . facebook.github.io. Facebook. 18 Temmuz 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Temmuz 2018.
- ^ . 16 Ekim 2021. 13 Temmuz 2015 tarihinde kaynağından arşivlendi.
- ^ . 21 Şubat 2018 tarihinde kaynağından arşivlendi.
- ^ . 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 , erişim tarihi: 30 Mayıs 2020
- ^ . 5 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Temmuz 2018.
- ^ . 18 Eylül 2020 tarihinde kaynağından arşivlendi.
- ^ . 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ı (); Yazar
|ad1=
eksik|soyadı1=
() - ^ "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 . 15 Kasım 2022 tarihinde kaynağından . Erişim tarihi: 15 Kasım 2022. Birden fazla yazar-name-list parameters kullanıldı (); Yazar
|ad1=
eksik|soyadı1=
() - ^ "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 . 15 Kasım 2022 tarihinde kaynağından . Erişim tarihi: 15 Kasım 2022. Birden fazla yazar-name-list parameters kullanıldı (); Yazar
|ad1=
eksik|soyadı1=
()
Dış bağlantılar
- YouTube'da GraphQL: The Documentary
- Resmî site
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
GraphQL API ler icin acik kaynakli bir veri sorgulama ve isleme dili ve bu sorgulari yerine getirmek icin yazilmis uygulamalardir GraphQL 2012 de Facebook tarafindan dahili olarak gelistirildi ve 2015 te herkese acik olarak yayinlandi GraphQL projesi 7 Kasim 2018 de Facebook tan kar amaci gutmeyen Linux Vakfi bunyesindeki yeni kurulan GraphQL Vakfi na devredildi 2012 den bu yana GraphQL in yukselisi GraphQL in yaraticisi Lee Byron tarafindan belirlenen benimseme zaman cizelgesini yakindan takip etti Byron in amaci GraphQL yi web platformlarinda her yerde mevcut hale getirmektir GraphQLGelistirici ler Facebook ve toplulukIlk yayinlanma14 Eylul 2015 2015 09 14 Guncel surumHaziran 2018 2018 06 Programlama diliImplementations in JavaScript Ruby gerceklestirmeleri digerleri Isletim sistemiCapraz platformResmi sitesigraphql orgKod deposugithub com graphql graphql spec GraphQL web API leri gelistirmek icin bir yaklasim saglar Bu ozelligiyle REST ve diger web hizmeti mimarileriyle karsilastirilabilir GraphQL istemcilerin talep ettikleri verilerin yapisini tanimlamasina olanak tanir ve veriler tanimlanan yapida sunucudan dondurulur Bu asiri buyuk miktarda verinin dondurulmesini engeller ve sorgu sonuclarinin web de onbellege alinmasini sekteye ugratabilir Sorgu dilinin esnekligi ve zenginligi basit API ler icin harcanilan efora degmeyecek kadar karmasik olabilir Adina ragmen GraphQL Neo4j gibi tam tesekkullu bir grafik veritabaninda veya hatta gecisli kapatmayi destekleyen SQL lehcelerinde bulunabilecek grafik islemlerinin zenginligini saglamaz Ornegin bir bireyin ebeveynlerini bildiren bir GraphQL arayuzu tek bir sorguda tum atalarinin kumesini donduremez GraphQL bir tip sistemi sorgulama dili ve yurutme semantigi statik dogrulama ve tip ic gozleminden olusur Okumayi yazmayi degistirmeyi ve verilerdeki degisikliklere abone olmayi gercek zamanli guncellemeler en yaygin olarak Websockets kullanilarak uygulanir destekler GraphQL sunuculari Haskell JavaScript Perl Python Ruby Java C C Scala Go Rust Elixir Erlang PHP R D ve Clojure dilleri dahil bircok programlama dilinde mevcuttur Tek bir sorgunun sonucu JSON biciminde dondurulur GraphQL 9 Subat 2018 de Sema Tanimlama Dili SDL spesifikasyonun bir parcasi oldu OrnekGONDERI istegi siparisler id urunListesi urun ad fiyat miktar toplamTutarAmount Yanit veri siparisler id 1 urunListesi urun ad orange fiyat 1 5 miktar 100 toplamTutar 150 Deneme yapmaGraphQL API leri API uc noktasinda farkli istekleri tetikleyerek ve yanitin dogrulugunu onaylayarak test edilebilir Bu islem gelistiriciler tarafindan manuel olarak yapilabilir veya test araclariyla otomatik hale getirilebilir Testlerin kendisi otomatik olarak da olusturulabilir Ornegin mevcut bir test durumu tarafindan tetiklenen bir istek bir degisken olusturmak icin degisiklige ugratilabilir ve arama tabanli teknikler araciligiyla yeni istekler uretilebilir Yayindaki API uc noktasina ulasan GraphQL istekleri semanin uygulanmasindaki hatalari tespit eden test senaryolari olusturmak icin de kullanilabilir Kaynakca 29 Mart 2019 tarihinde kaynagindan arsivlendi Erisim tarihi 26 Mart 2019 17 Eylul 2015 tarihinde kaynagindan arsivlendi 14 Eylul 2015 5 Temmuz 2018 tarihinde kaynagindan arsivlendi Facebook s GraphQL gets its own open source foundation TechCrunch Ingilizce 22 Ocak 2019 tarihinde kaynagindan Erisim tarihi 7 Kasim 2018 The Linux Foundation Ingilizce 6 Kasim 2018 28 Ocak 2019 tarihinde kaynagindan arsivlendi Erisim tarihi 7 Kasim 2018 NordicAPIs 8 Mart 2018 30 Mayis 2019 tarihinde kaynagindan arsivlendi GraphQL vs REST Overview Phil Sturgeon Ingilizce 26 Nisan 2020 tarihinde kaynagindan Erisim tarihi 25 Kasim 2018 Honest Engineering Ingilizce 4 Agustos 2018 26 Kasim 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 26 Kasim 2018 Howto GraphQL 12 Eylul 2017 tarihinde kaynagindan arsivlendi Erisim tarihi 4 Temmuz 2018 facebook github io Facebook 18 Temmuz 2018 tarihinde kaynagindan arsivlendi Erisim tarihi 4 Temmuz 2018 16 Ekim 2021 13 Temmuz 2015 tarihinde kaynagindan arsivlendi 21 Subat 2018 tarihinde kaynagindan arsivlendi graphene python org 12 Ekim 2015 tarihinde kaynagindan arsivlendi Erisim tarihi 18 Haziran 2017 graphql libgraphqlparser GraphQL 27 Mayis 2020 22 Mayis 2020 tarihinde kaynagindan erisim tarihi 30 Mayis 2020 5 Mart 2016 tarihinde kaynagindan arsivlendi Erisim tarihi 19 Temmuz 2018 18 Eylul 2020 tarihinde kaynagindan arsivlendi 9 Subat 2018 tarihinde kaynagindan arsivlendi 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 kullanildi yardim Yazar ad1 eksik soyadi1 yardim 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 Kasim 2022 tarihinde kaynagindan Erisim tarihi 15 Kasim 2022 Birden fazla yazar name list parameters kullanildi yardim Yazar ad1 eksik soyadi1 yardim 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 Kasim 2022 tarihinde kaynagindan Erisim tarihi 15 Kasim 2022 Birden fazla yazar name list parameters kullanildi yardim Yazar ad1 eksik soyadi1 yardim Dis baglantilarYouTube da GraphQL The Documentary Resmi site