Graphql hakkında bilmeniz gerekenler
GraphQL, grafikleri sorgulamak ve değiştirmek için bir dildir. Başlangıçta Facebook tarafından dahili amaçlar için geliştirilen GraphQL, 2015'ten beri açık kaynak olarak mevcuttur. GraphQL hakkında ne bilmelisiniz?
“Grafik sorgu dili” anlamına gelen GraphQL, 2012 yılında iç kullanım için Facebook tarafından geliştirilen ve grafiklerde bulunan verilerin hedefli bir şekilde verimli bir şekilde sorgulanabileceği ve değiştirilebileceği bir dildir. 2015 yılında Graphql bu nedenle ortak uzun bir süre altında açık kaynak olarak yayınlandı ve yayınlandı. Bu arada, daha fazla gelişme, Linux Vakfı'na ait özel olarak kurulan GraphQL Vakfı'nın elindedir.
Prensip olarak, dil SQL'e benzer, ancak veritabanlarında kullanmayı amaçlamaz, ancak web ve buluttaki arılar için bir sorgu dilidir. GraphQL, belirli bir programlama dili, belirli bir platform veya özel ve dolayısıyla evrensel protokoller ve teknoloji yoluyla bağımsız olarak kullanılabilir.
GraphQL'de istemci, hangi verilerin sunucudan kurtulmak istediğini belirtir, bu da gereksiz verilerin iletilmemesi gerektiğinden dili daha hafif hale getirir. Geri kalanların aksine, GraphQL aynı zamanda standartlaştırılır ve statik olarak entegrasyon ve birlikte çalışabilirliği kolaylaştıran çok daha yüksek bir dereceye kadar sindirilir.
Adından farklı olarak, GraphQL'in basit bir sorgu dili olmadığını öne sürüyor. “Sorgu” ile ilgili verilerin okunması desteklenir, ancak veriler “mutasyonlar” ile de değiştirilebilir. Ayrıca, bir müşteri, “abonelikler” kavramı olan gerçek zamanlı verilerdeki değişiklikler hakkında bilgilendirilebilir.
Bu üç işlem, temel veri türleri ve GraphQL şemasının (SDL) dil tanımında yazılan bir şemada karşılıklı ilişkileri ile birlikte tanımlanır. Bu aynı zamanda Şubat 2018'den bu yana spesifikasyonların bir parçasıdır.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Graphql nedir?
Sorgular, Mutasyonlar & co.
Sorgu bir JSON belgesine benzer, bu nedenle yalnızca anahtarlar dahildir: Değerler tam olarak bir sorgu ile sorgulanması gereken şeydir. Müşteri, sorguda belirtilen yapıyı, hangi veri ve ilişkilerin alakalı olduğunu düşündüğünü belirler. Sorgu ve sonuç statik olarak sayısallaştırılmıştır.
Geri kalanların aksine, genel olarak herhangi bir soru için sadece bir uç nokta gereklidir. /Graphql kanun. Teknik olarak, bir sorgu bir GET veya Post Hızı yardımıyla aktarılabilir: İlk durumda, sorgu dizesindeki sorgunun gerçek verileri teslim edilir ve ikinci durumda istek gövdesi içinde.
Verileri değiştirmeye hizmet eden mutasyonlar aynı zamanda şema içinde tanımlanmıştır. İşlevleri temsil ederler ve bu nedenle bir tür RPC yaklaşımı oluştururlar. Beklendiği gibi, parametreler mutasyonlara verilebilir ve değişkenler kullanılabilir. Mutasyonlar her zaman posta ile gönderilir, bu nedenle aynı son nokta sorular için kullanılır.
Son olarak, abonelikler aboneliğin verilerde değişiklik yapmasına izin verir, böylece müşteriler push bildirimi yoluyla bilgilendirilebilir. Ayrıca tip korumalı ile çalışırlar, ancak genellikle almak veya sonrası almak yerine webchet'e dayanırlar.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Queri, Mutasyonlar & co. Graphql'de
Çözmek
Bir GraphQL sunucusunun görevi, istemci tarafından gönderilen sorguları, mutasyonları ve abonelikleri kabul etmek, işlemek ve yanıtlamaktır. Teknik ve teknik yönleri ayırt etmek önemlidir.
Kabul, analiz ve cevap teknik yönlerdir. Onlar için çok sayıda dil ve programlama platformu için bitmiş modüller vardır, örneğin JavaScript, TypeScript ve Node.js.
Teknik bakış açısının ilgili yönü, varış soruşturmalarının detaylandırılmasıdır. Buradaki soru, gerçek sorgu ve değişiklikler yapıldıkça özellikle önemlidir. Amaç için, işlevler yazmak ve bunları sunucuda “çözümleyici” olarak arşivlemek geliştiricilerin sorumluluğundadır. Görevleri, bir API, bir nesne veya diğer veri oranı olsun, her bir alan için uygun verileri belirlemektir.
Mümkün olan en iyi performansı elde etmek için, istenecek veri raporuna bağlı olarak bazı durumlarda bu mümkün olmasa da, kararların yürütülmesi mümkünse paraleldir. Buna ek olarak, her bir çözümleyici genel çözücü sonucunu alır. Yolda, her bir alan için ayrı bir veritabanı sorgusu yapılması beklenir.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Graphql'de Çözücü
Dinlenmeye karşı grafik
Şimdi GraphQL'i karşılaştırırsak ve dinlenirsek, ilk bakışta, esas olarak GraphQL'in tek bir son nokta ile çalışması gerçeğinde farklılık gösterirken, REST her veri türü ve her kimlik için ayrı bir son nokta sunar. Geri kalanda bir son nokta ve bir kimlik birbirine bağlı olsa da, GraphQL bu ikisini kasıtlı olarak yerinden eder. Bu, GraphQL hakkında geri kalanından daha fazla konuşma eğilimindedir.
Ancak, GraphQL için konuşan çok sayıda başka avantaj vardır. REST-PIS genellikle çok fazla veya çok az veri döndürür, bu nedenle gereksiz veriler iletilmeli veya farklı isteklere ihtiyaç vardır. Bu problemler “fazla yangın” veya “hafife alınma” olarak bilinir. Buna ek olarak, GraphQL, örneğin bir listenin öğelerinin ayrıntılarının gerekli olduğu “N+1” problemini önler.
Son fakat en az değil, Graphql için türün güvenliği ve basit sürümü bile. Türün güvenliği sadece Openapi ve JSON desenleri yardımıyla sınırlı bir şekilde garanti edilebilir, sürümleme nispeten hantaldır. GraphQL'de ise, diğer alanlara bir tür veri eklenebilir, bu da uyumsuz değişiklikler olmadığı sürece – mevcut istemciler için görünmez kalır.
Bununla birlikte, sadece GraphQL için konular yoktur, bazıları da bu dilin kullanımına karşı konuşur. Bu, yalnızca bir son nokta kullanıldığı için önbellekte depolama ile istemci tarafında çalışma seçeneğinin eksikliğini içerir. Bu noktada, GraphQL kasıtlı olarak HTTP ilkelerini takip etmez. Sorgu çok geniş hale gelirse ve sunucuyu potansiyel olarak felç ederse, aslında GraphQL'in güçlü yönlerinden biri olan verilerin istemcisi de sorunlu olabilir.
GraphQL'in güçlü yönlerinden biri olan statik sistem, statik türleri tanımlamak ve belirlemek mümkün değilse bir dezavantaj haline gelebilir. Örneğin, bir API'nin farklı türlerde JSON nesnelerini döndürmesi gerekiyorsa, GraphQL'de ifade edilmesi zordur. Bunun için, serileştirilmiş dizeler json olarak geri dönmek gerekebilir.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
Dinlenmeye karşı grafik
En İyi Uygulama
Bununla birlikte, GraphQL ve geri kalanı arasındaki en büyük fark, GraphQL'in semantiği ifade etmenin çok daha iyi yolları nedeniyle diğerlerinden çok daha profesyonel olmasıdır. Ancak bu, bir başvurunun şirket mantığının kararda barındırılması gerektiği anlamına gelmez.
GraphQL'den bağımsız olarak gerçek profesyonellik, her zaman ayrı bir seviyede veya bileşenlerinde yer almalıdır, bu sadece GraphQL veya başka bir arılar tarafından erişilebilir. Kimlik doğrulama, Yetkilendirme, Cors & Co. olarak çapraz bağlamlar aynı grafikle değil, bağımsız modüllerde ele alınmalıdır.
Bununla birlikte, en önemli şey her zaman GraphQL'in veritabanı kalıpları gibi teknik yapıları değil, profesyonel hakimiyeti temsil etmesi gerektiğini göstermektir. Örneğin, “Oluştur”, “Güncelleme” ve “ortadan kaldırılır” gibi terimler mutasyonlarda görünür, bu genellikle API'nın teknik olarak planlandığının ve oluşturulduğunun açık bir göstergesidir.
API'nın dili, GraphQL'in belgelerinin “paylaşılan dil” veya “günlük dil” olarak adlandırdığı kullanıcıların diline karşılık gelmelidir. Sebep, GraphQL ayrıca bu yöne giden alan (DDD) tarafından yönlendirilen tasarıma da mükemmel uyum sağlar.
Önerilen editoryal içerik
Rızanızla, burada harici bir YouTube videosu (Google Ireland Limited) burada davet edilir.
YouTube videosu her zaman yüklenir
YouTube videosu artık yüklüyor
GraphQL'de En İyi Uygulama
Çözüm
GraphQL, geri kalanına dayanmayan arıları modellemek için kullanılabilecek ilginç bir dildir. GraphQL'in en büyük gücü, arıları profesyonel olarak daha iyi tanımlayabilme olasılığıdır, bu da evin içerdiği güvenlik türü ile ilgili olarak daha iyi sorulara ve değişim emirlerine yol açar.
GraphQL, prensipten dolayı artık arıların aşırı ve hafife alınmasını önlediğinden, yüksek düzeyde profesyonellik ve iş süreçlerini haritalaması gereken kapsamlı ve karmaşık arılar için idealdir. Doğrudan GraphQL ile verilere güncellemeler hakkında bilgi edinme olasılığı da geri kalanına göre önemli bir avantajdır.
()