İçeriğe atla

GraphQL

GraphQL
Geliştirici(ler)Facebook ve topluluk
İlk yayınlanma14 Eylül 2015 (2015-09-14)
Güncel sürümHaziran 2018 (2018-06)[1]
Programlama diliImplementations in Java, JavaScript, Ruby, Scala gerçekleştirmeleri, diğerleri.
İşletim sistemiÇapraz platform
Resmî sitesigraphql.org
Kod deposugithub.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

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

  1. ^ "GraphQL June 2018 Release Notes". 29 Mart 2019 tarihinde kaynağından arşivlendi. Erişim tarihi: 26 Mart 2019. 
  2. ^ "GraphQL: A query language for APIs". 17 Eylül 2015 tarihinde kaynağından arşivlendi. 
  3. ^ "GraphQL: A data query language". 14 Eylül 2015. 5 Temmuz 2018 tarihinde kaynağından arşivlendi. 
  4. ^ "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. 
  5. ^ "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. 
  6. ^ "Is GraphQL Moving Toward Ubiquity?". NordicAPIs. 8 Mart 2018. 30 Mayıs 2019 tarihinde kaynağından arşivlendi. 
  7. ^ "GraphQL vs REST: Overview". Phil Sturgeon (İngilizce). 26 Nisan 2020 tarihinde kaynağından arşivlendi. Erişim tarihi: 25 Kasım 2018. 
  8. ^ "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. 
  9. ^ "GraphQL Fundamentals". Howto GraphQL. 12 Eylül 2017 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Temmuz 2018. 
  10. ^ "GraphQL". facebook.github.io. Facebook. 18 Temmuz 2018 tarihinde kaynağından arşivlendi. Erişim tarihi: 4 Temmuz 2018. 
  11. ^ "GraphQL js". 16 Ekim 2021. 13 Temmuz 2015 tarihinde kaynağından arşivlendi. 
  12. ^ "GraphQL - Perl implementation of GraphQL". 21 Şubat 2018 tarihinde kaynağından arşivlendi. 
  13. ^ "Graphene". graphene-python.org. 12 Ekim 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 18 Haziran 2017. 
  14. ^ graphql/libgraphqlparser, GraphQL, 27 Mayıs 2020, 22 Mayıs 2020 tarihinde kaynağından arşivlendi, erişim tarihi: 30 Mayıs 2020 
  15. ^ "Absinthe: The GraphQL toolkit for Elixir". 5 Mart 2016 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Temmuz 2018. 
  16. ^ "Package graphqld on DUB". 18 Eylül 2020 tarihinde kaynağından arşivlendi. 
  17. ^ "GraphQL SDL included in Github repository". 9 Şubat 2018 tarihinde kaynağından arşivlendi. 
  18. ^ "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)
  19. ^ "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)
  20. ^ "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)

Dış bağlantılar

İlgili Araştırma Makaleleri

Gömülü Linux Linux işletim sisteminin cep telefonları, PDA'ler, elde taşınabilir medya oynatıcılar ve diğer tüketici elektroniği cihazları gibi gömülü sistemlerde kullanılan adıdır.

<span class="mw-page-title-main">Dennis Ritchie</span> Amerikalı bilgisayar bilimci

Dennis MacAlistair Ritchie, uzun süre birlikte çalıştığı arkadaşı Ken Thompson ile birlikte C programlama dilini ve Unix işletim sistemini yazan saygın Amerikalı bilgisayar bilimcisi. 1983'te Turing Ödülü'nü, 1999'de Ulusal Teknoloji Madalyası ödülünü aldı. 12 Ekim 2011'de ölmüştür.

<span class="mw-page-title-main">Linux Mint</span> Linux tabanlı bir işletim sistemi

Linux Mint, Ubuntu ve Debian temel alınarak geliştirilen, masaüstü kullanıcılarına yönelik bir Linux dağıtımıdır. Linux Mint, "güçlü ve kullanımı kolay, hem de modern, şık bir işletim sistemi" olmayı hedeflemektedir.

<span class="mw-page-title-main">Sınav</span> bir kişinin bilgi, beceri, yetenek, fiziksel uygunluk vb. şeylerini ölçmek için kullanılan ölçek

Sınav veya imtihan, kişinin belirli bir konu hakkında edindiği bilgiyi veya deneyimi ölçmek için kullanılan bir yöntemdir. Sınava giren kişinin diğer birçok konudaki bilgisini, becerisini, yeteneğini, istidâtını, kabiliyetini, fiziksel uygunluğunu veya sınıflandırmasını ölçmeyi amaçlar. Çoğunlukla süre kısıtlamalı olarak gerçekleştirilir. Sınav, kişinin edindiği bilgiyi/bilgi birikimini verilen kısıtlı bir zaman dilimi içerisinde en iyi şekilde ifade etmesidir. Bir test sözlü olarak, kağıt üzerinde veya bilgisayarda yapılabilir. Sorular standart test, açık uçlu soru ve kapalı uçlu soru'lardan oluşur. Sınavda sorulacak olan sorular öğretilen bilgiye bağlı olarak, mantıksal olarak belirli kurallar çerçevesinde oluşturulur. Kişinin veya öğretilen bilginin düzeyine göre sorular(çoktan seçmeli olduğu takdirde) üç, dört veya beş seçenek olabilir. Sınavlar çevrimiçi, görsel, bedensel, ruhsal, yazılı veya işitsel yollarla yapılabilir. Resmi testler genellikle bir notlandırma veya test puanıyla sonuçlanır. Türkiye'de sınav uygulayan kurumların başında Türkiye Cumhuriyeti Millî Eğitim Bakanlığı, ÖSYM ve özel dershaneler gelmektedir.

<span class="mw-page-title-main">David S. Miller</span> Amerikalı yazılımcı

David Stephen Miller, ABD'il yazılım geliştiricisi. Linux çekirdeği üzerinde SPARC uygulamasından sorumlu olan Miller'ın GNU Compiler Collection üyeliği de bulunmaktadır.

<span class="mw-page-title-main">LibreOffice Base</span>

LibreOffice Base, özgür ve ücretsiz LibreOffice yazılım ailesinin veritabanı yönetim aracı. LibreOffice Base kullanılarak tablo, form, sorgu ve raporlar oluşturup düzenlenebilir. Kullanıcı bu işlemleri ister kendi veritabanında, isterse Base ile birlikte gelen Firebird, HSQLDB veritabanı motorlarıyla yapabilir.

<span class="mw-page-title-main">Sorgulama dilleri</span>

Sorgulama dilleri, bilgisayar dilleri kategorisinde yer alan, veritabanlarında ve bilgi sistemlerinde veri sorgulaması için kullanılan dillerdir.

<span class="mw-page-title-main">Olba Krallığı</span>

Olba Krallığı veya Olba Tapınak Devleti, ilk çağda Mersin ilinde kurulmuş bir devlettir. Küçük bir devlet olan Olba Krallığı tarihinin büyük kısmını çevredeki Selevkos ve Roma İmparatorluğu gibi güçlü devletlerin vasalı olarak geçirmiştir. Günümüzde bu devletin izleri Mersin ilindeki yoğun antik eserlerde görülmektedir.

RethinkDB, aynı adlı şirket tarafından oluşturulan ücretsiz ve açık kaynaklı, dağıtılmış belge tabanlı bir veritabanıdır. RethinkDB, JSON belgelerini dinamik şemalarla depolar ve sorgu sonuçları için gerçek zamanlı güncellemelerin uygulamalara aktarılmasını kolaylaştırmak için tasarlanmıştır. Y Combinator tarafından Haziran 2009'da yatırım alan RethinkDB, Ekim 2016'da şirket sürdürülebilir bir iş kuramadığını ve ürünlerinin gelecekte ticari destek olmadan tamamen açık kaynaklı olacağını açıkladı.

Facebook Graph Search, Facebook'ta geliştirilmekte olan bir anlamsal ağ ve anlamsal arama türüdür. Facebook tarafından Mart 2013'te tanıtıldı. Bir bağlantı listesi yerine kullanıcıların doğal dil sorgularına yanıt vermek için tasarlandı. Grafik Arama özelliği, bir milyardan fazla kullanıcısından elde ettiği büyük verileri ve harici verileri, kullanıcıya özel arama sonuçları sağlayan bir arama motorunda birleştirdi. Facebook CEO'su Mark Zuckerberg başkanlığındaki bir sunumda, Grafik Arama algoritmasının bir kullanıcının arkadaş ağından bilgi bulduğu açıklandı. Microsoft'un Bing arama motoru tarafından ek sonuçlar sağlandı. Temmuz ayında, Facebook'un ABD İngilizcesi sürümünü kullanan tüm kullanıcılara sunuldu. Aralık 2014'ten itibaren daha az görünür hale getirildikten sonra, orijinal Grafik Arama, Haziran 2019'da neredeyse tamamen kullanımdan kaldırıldı.

<span class="mw-page-title-main">Emmabuntüs</span>

Emmabuntüs, Ubuntu / Debian üzerinden geliştirilen ve Emmaüs Toplulukları gibi insani yardım kuruluşlarına bağışlanan bilgisayarların yeniden paketlenmesini kolaylaştırmak için tasarlanmış bir Linux dağıtımıdır.

Bu sayfada, kategorize edilmiş bir liste şeklinde önemli Linux dağıtımları hakkında genel bilgiler mevcuttur. Dağıtımlar, kökü olan ana dağıtım veya paket yönetim sistemine göre sınıflandırılır.

BugGuide, böcekler, örümcekler ve eklem bacaklılarla ilgili gözlemlerini paylaşan hem amatör hem de profesyonel doğa bilimcilerinden oluşan bir web sitesi ve çevrimiçi topluluktur. Web sitesi, bilgilendirici kılavuz sayfalarından ve Amerika Birleşik Devletleri ile Kanada'dan tanımlama ve araştırma için kullanılan binlerce eklem bacaklı fotoğrafından oluşmaktadır. Ticari olmayan site, Iowa Eyalet Üniversitesi Entomoloji Bölümü tarafından barındırılmaktadır. BugGuide, 2003 yılında fotoğrafçı Troy Bartlett tarafından tasarlandı ve 2006'dan beri Iowa Eyalet Üniversitesi'nde entomoloji yardımcı doçenti ve kıdemli sistem analisti John VanDyk tarafından yönetilmektedir. Web sitesi, halkın böceklere yönelik algısını değiştirmeye yardımcı olduğu için tanınmıştır.

antiX Linux Dağıtımı

antiX ( ) Debian Stable tabanlı bir Linux dağıtımıdır. Nispeten hafiftir ve eski bilgisayarlar için uygundur, ayrıca apt-get paket sistemi ve Debian uyumlu depolar aracılığıyla en son çekirdek ve uygulamaların yanı sıra güncellemeler ve eklemeler sağlar. antiX, özellikle tartışmalı systemd init sistemiyle birlikte gönderilmez veya bu sistemi desteklemez. Sürüm 19'dan beri iki init (başlatma) sistemi çeşidiyle gelir: sysVinit ve runit.

<span class="mw-page-title-main">ClearOS</span>

ClearOS, ClearFoundation tarafından geliştirilmiş ağ geçidi, dosya, yazdırma, posta ve mesajlaşma hizmetlerine sahip bir Linux dağıtımıdır.

<span class="mw-page-title-main">Android Debug Bridge</span>

Android Debug Bridge, Android tabanlı cihazlarda hata ayıklamak için kullanılan bir programlama aracıdır. Android cihazındaki arka plan programı, ana bilgisayardaki sunucuya USB veya TCP üzerinden son kullanıcı tarafından kullanılan istemciye bağlanan TCP üzerinden bağlanır. 2007'den beri Google tarafından Apache Lisansı altında açık kaynaklı yazılım olarak sunulan özellikler arasında bir kabuk ve yedekleme yapma imkanı bulunmaktadır. adb yazılımı; Windows, Linux ve macOS ile uyumludur. Botnet'ler ve RSA kimlik doğrulaması ve cihaz beyaz listeye alma gibi azaltıcı etkenlerin geliştirildiği diğer kötü amaçlı yazılımlar tarafından kötüye kullanılmıştır.

<span class="mw-page-title-main">LXLE Linux</span>

LXLE, LXDE masaüstü ortamını kullanan ve en son Ubuntu/Lubuntu LTS sürümünü temel alan bir Linux dağıtımıdır. LXLE, hem eski hem de yeni donanımda iyi çalışan, görsel estetiğe odaklanan hafif bir dağıtımdır.

<span class="mw-page-title-main">Void Linux</span>

Void Linux, sıfırdan tasarlanan ve uygulanan X Binary Package System (XBPS) paket yöneticisini ve "runit init" sistemini kullanan bağımsız bir Linux dağıtımıdır. İkili çekirdek blobları hariç, temel kurulum tamamen özgür yazılımdan oluşur ancak kullanıcılar özel yazılım yüklemek için özgür olmayan resmi bir depoya erişebilir.

<span class="mw-page-title-main">Windows Subsystem for Linux</span> Linux için Windows Alt Sistemi

Windows Subsystem for Linux (WSL), Windows 10, Windows 11, Windows Server 2019 ve Windows Server 2022 üzerinde yerel olarak Linux ikili yürütülebilir dosyalarını çalıştırmak için kullanılan uyumluluk katmanıdır.

<span class="mw-page-title-main">Steam Link</span>

Steam Link, kişisel bir bilgisayardan veya Steam Machine'den kablosuz olarak bir mobil cihaza veya başka bir monitöre Steam içeriği akışı sağlamak için Valve Corporation tarafından yapılmış bir donanım ve yazılım çözümüdür. Steam Link, ilk olarak Kasım 2015'te Steam Makinelerinin çıkışıyla birlikte bir donanım aygıtı olarak piyasaya sürüldü. Valve, mobil cihazlar ve akıllı televizyonlar için yazılım tabanlı Steam Link uygulamasını desteklemek ve Raspberry Pi mikro bilgisayarı için bir yazılım paketi olarak Steam Link sağlamak adına Kasım 2018'de Steam Link donanım cihazını durdurdu.