Yeni Başlayanlar İçin GraphQL Eğitimi: Nedir, Özellikler ve Örnek
GraphQL nedir?
GraphQL Facebook tarafından mevcut verilerle sorgu yürütmek için geliştirilen bir uygulama katmanı sunucu tarafı teknolojisidir. GraphQL, RESTful API çağrılarını optimize edebilir. Verilerinizi almanın ve güncellemenin bildirimsel bir yolunu sunar. GraphQL, sunucudan istemciye veri yüklemenize yardımcı olur. Programcıların yapmak istedikleri istek türlerini seçmelerine olanak tanır.
GraphQL'i neden kullanmalıyım?
GraphQL kullanmanın nedenleri şunlardır:
- İnsan tarafından okunabilen bir sorgu sağlar.
- GraphQL'de birçok veritabanıyla uğraşmak çok kolaydır.
- Mikroservisler ve karmaşık sistemler için uygundur.
- Tek bir API çağrısıyla veri getirebilirsiniz.
- Sorgu toplu işleme ve önbelleğe alma konusunda size yardımcı olur.
- Aşırı ve yetersiz sorunlarla karşılaşmazsınız.
- İsteklerinizi ihtiyaçlarınıza göre uyarlamak.
- Şemayı uygun formatta keşfetmenize yardımcı olur.
- GraphQL, API değişiklikleriyle dokümantasyonu otomatik olarak senkronize tutar.
- API gelişimi sürüm oluşturma olmadan mümkündür.
- GraphQL alanları, yeniden kullanım için daha yüksek bir bileşen düzeyinde paylaşılabilen birden fazla sorguda kullanılır.
- Hangi işlevlerin ortaya çıkarılacağını ve nasıl çalışacaklarını seçebilirsiniz.
- Hızlı uygulama prototipleme için kullanılabilir.
GraphQL Uygulamaları
GraphQL'in önemli uygulamaları şunlardır:
- Röle ve diğer istemci çerçevelerini sağlar
- GraphQL, mobil uygulamanın performansını artırmanıza yardımcı olur.
- Sunucu tarafı bulut hizmetini azaltarak aşırı getirme sorununu azaltabilir ve istemci tarafı ağ kullanımını azaltabilir.
- İstemci uygulamasının uzun sorgu biçiminde hangi alanların gerekli olduğunu belirtmesi gerektiğinde kullanılabilir.
- Eski veya mevcut API'nize işlevsellik eklemeniz gerektiğinde GraphQL'den tam olarak yararlanılabilir.
- Karmaşık API'leri basitleştirmek istediğinizde kullanılır.
- Nesne yönelimli programlamada yaygın olarak kullanılan cephe desenini karıştırın ve ezin.
- Birden fazla yerden verileri tek bir kullanışlı API'de toplamanız gerektiğinde.
- Kullanıcı ihtiyaçlarına göre yanıt yapısını belirlemek için GraphQL'i mevcut bir API üzerinde soyutlama olarak kullanabilirsiniz.
GraphQl'i öğrenmeden önce neyi öğrenmeniz gerekiyor?
Bu GraphQL eğitimi temel alınmıştır Ekspres ve NodeJ'ler. Bu nedenle temel NodeJS anlayışıyla GraphQL'i çok kolay bir şekilde öğrenebilirsiniz.
GraphQL Temel Bileşenleri
Şimdi bu GraphQL eğitiminde GraphQL'in temel bileşenlerini öğrenelim:
Yukarıdaki şekilde gösterildiği gibi GraphQL'in üç temel bileşeni vardır: 1) Sorgu, 2) Çözümleyici ve 3) Şema.
Sorgu
Sorgu, istemci makine uygulaması tarafından yapılan bir API isteğidir. Arttırmaları destekler ve dizilere işaret eder. Sorgu değerleri okumak veya getirmek için kullanılır.
Sorgunun Parçaları:
Sorgulamanın önemli kısımları şunlardır
- Alan:
Bir alan, sunucudan belirli bir bilgi istediğimizi basitçe belirtir. Aşağıda, graphQL sorgusundaki bir alanın GraphQL örneği verilmiştir.
query { team { id name } } "data": { "team":[ { "id": 1, "name": "Avengers" } , … ] } }
Yukarıdaki GraphQL örneğinde sunucudan Team isimli alanı ve bu alanın id, name gibi alt alanlarını istiyoruz. GraphQL sunucusu istediğimiz verileri döndürüyor.
- Argümanlar
In DİNLENME, URL segmentleri ve sorgu parametreleri olarak yalnızca tek bir argüman kümesi geçirebiliriz. Belirli bir profili elde etmek için tipik bir REST çağrısı aşağıdaki gibi görünecektir:
GET /api'team?id=2 Content-Type: application JSON { "id": 2, "name": "Justice League." }
Çözmek
Çözümleyiciler, GraphQL işlemini verilere dönüştürmek için talimatlar sağlar. Çözümleyici fonksiyonlarını tanımlayarak sorguyu verilere çözerler.
Belirli bir alana göre verileri almak için sunucuya işlemin yanı sıra konumu da görüntüler. Çözümleyici ayrıca veritabanı şemasını ve API şemasını da ayırır. Ayrılmış bilgiler veritabanından elde edilen içeriğin değiştirilmesine yardımcı olur.
Şema
GraphQL şeması, GraphQL uygulamasının merkezidir. Kendisine bağlanan istemcilerin kullanabileceği işlevselliği açıklar.
GraphQL'in Özellikleri
GraphQL'in önemli özellikleri şunlardır:
- Zorunlu olmayan bildirimsel sorgu dili sağlar.
- Hiyerarşik ve ürün merkezlidir.
- GraphQL güçlü bir şekilde yazılmıştır. Bu, sorguların belirli bir sistem bağlamında yürütüldüğü anlamına gelir.
- GraphQL'deki sorgular sunucuda değil istemcide kodlanır.
- OSI modelinin uygulama katmanının tüm özelliklerine sahiptir.
GraphQL İstemcileri
GraphQL istemcisi, ilgili GraphQL Sunucusuna POST istekleri gönderen bir koddur. Bir GraphQL API'sini doğrudan sorgulayabilirsiniz, ancak iyi bir yaklaşım, Relay kullanarak özel bir istemci kitaplığından yararlanmaktır.
Bu JavaScript kütüphanesi, Facebook tarafından GraphQL ile React uygulamaları yapmak için geliştirilmiştir. GraphQL istemcileri Drupal gibi bir CMS, tek sayfalık bir uygulama, bir mobil uygulama vb. olabilir.
GraphQL Sunucuları
GraphQL sunucuları, GraphQL spesifikasyonunun sunucu tarafında uygulanmasıdır. Verilerinizi, istemci programınızın sorgulayabileceği GraphQL API olarak gösterir. veritabanı.
GraphQL Ağ Geçitleri
Ağ Geçidi, diğer arka uç hizmetleriyle başa çıkmak için ayrı bir hizmet oluşturabileceğiniz bir mikro hizmet modelidir. Uygulanabilir belgeler sunar ve tek bir istekle birden fazla kaynaktan veri toplamanın kolay bir yolunu sunar.
GraphQL'deki değişken nedir?
A GraphQL'deki değişken Dinamik değerleri istemci sorgusundan ayırmak ve sorguyu benzersiz bir sözlük olarak iletmek için kullanılır. GraphQL'deki değişken, istemci tarafından yazılan sorgunun veya mutasyonların bireysel argümanlarla yeniden kullanılması için de kullanılabilir. GraphQL'de dinamik argümanları doğrudan sorgu dizesine iletemezsiniz. Bunun nedeni, istemci tarafı kodunun, programı çalıştırdığınız sırada sorgu dizesini dinamik olarak değiştirmesi gerekmesidir.
GraphQL, dinamik değerleri sorgudan çıkarmak için iyi bir yol sunar. Bunları ayrı bir sözlük olarak geçirir. Bu değerlere değişkenler denir. Değişkenlerle çalıştığımızda, aşağıdaki üç şeyi yapmamız gerekir:
- Sorgudaki statik değeri bir değişken adıyla değiştirin.
- Değişken adını GraphQL sorgusu tarafından kabul edilen değişkenlerden biri olarak bildirin.
- Aktarıma özgü değişkenler sözlüğündeki değeri iletin.
İşte hep birlikte şöyle görünüyor:
query HeroNameAndFriends($episode: Episode) { hero(episode: $episode) { name friends { name } } } { "episode": "JEDI" } { "data": { "hero": { "name": "R2-D2", "friends": [ { "name": "Luke Skywalker" }, { "name": "Han Solo" }, { "name": "Leia Organa" } ] } } }
Yukarıdaki GraphQL örneğinde görebileceğiniz gibi, yeni bir sorgu oluşturma ihtiyacının dışında basitçe farklı bir değişkeni aktardık.
Mutasyon Nedir?
Mutasyon, GraphQL'deki veri kümesini değiştirmenin bir yoludur. Veri deposundaki verileri değiştirir ve bir değer döndürür. Mutasyonlar veri eklemenize, güncellemenize veya silmenize yardımcı olur. Genel olarak mutasyonlar bir şema parçası olarak tanımlanır.
GraphQL mutasyonlarını tasarlarken dikkate alınması gereken noktalar
GraphQL tasarlarken önemli noktalar şunlardır:
- adlandırma: Öncelikle mutasyonlarınıza fiil adını vermelisiniz. Daha sonra isim veya varsa “nesne”. Mutasyonları adlandırırken camelCase'i kullanın.
- Özgüllük: Mümkün olduğunca mutasyona özel yapmalısınız. Mutasyonlar, kullanıcı tarafından gerçekleştirilen anlamsal eylemleri temsil etmelidir.
- Giriş nesnesi: İstemcide mutasyonu yürütmek için bağımsız değişken olarak tek, benzersiz, gerekli bir giriş nesnesi türü kullanın.
- Benzersiz yük türü: Her mutasyon için benzersiz bir yük türü kullanmalısınız. Ayrıca mutasyon çıktısını söz konusu veri yükü türüne bir alan olarak da ekleyebilirsiniz.
- Yuvalama: Mantıklı olan her yerde mutasyonunuz için iç içe yerleştirmeyi kullanın. GraphQL API'den tam olarak yararlanmanızı sağlar.
GraphQL ve REST arasındaki fark
Aşağıdaki tablo, aralarındaki önemli farkı göstermektedir: GraphQL ve REST.
GraphQL | DİNLENME |
---|---|
İstemci odaklı mimariyi takip eder. | Sunucu odaklı mimariyi takip eder. |
GraphQL bir şemaya göre organize edilebilir. | REST uç noktalara göre düzenlenebilir. |
GraphQL büyüyen bir topluluktur. | REST çok büyük bir topluluktur. |
GraphQL'de geliştirme hızı hızlıdır. | REST'teki geliştirme hızı Yavaştır. |
GraphQL'deki öğrenme eğrisi zordur. | REST'teki öğrenme eğrisi orta düzeydedir. |
Kimlik, onu nasıl getirdiğinizden farklıdır. | REST'te çağırdığınız uç nokta, belirli bir nesnenin kimliğidir. |
GraphQL'de sunucu mevcut kaynakları belirler. | Kaynağın şekli ve boyutu REST'teki sunucu tarafından belirlenir. |
GraphQL tüm platformlarda yüksek tutarlılık sağlar. | Tüm platformlarda tutarlılık sağlamak zordur. |
GraphQL'in dezavantajları
GraphQL'in dezavantajları şunlardır:
- Genç ekosistem
- Arka uç kısmında kaynak eksikliği.
- Karmaşık bir uygulama için eksik tasarım deseni.
- Karmaşık sorgularda performans sorunları.
- Küçük uygulamalar için aşırıya kaçma
- GraphQL, istek içeriğinin saklanmasını sağlayan HTTP önbellekleme yöntemlerine bağlı değildir.
- GraphQL dosyaları anlamıyor. Dolayısıyla dosya yükleme özelliği dahil değildir.
- GraphQL ile Şema Tanım Dili öğrenmek gibi birçok geliştirme öncesi eğitim almaya hazır olun.
GraphQL tarafından kullanılan Açık Kaynak Uygulamalar ve Araçlar
GraphQL'in kullandığı önemli açık kaynaklı uygulamalar ve araçlar şunlardır:
- Gatsby: Gastby, birden fazla GraphQL API kaynağından türetilen verileri kullanabilen, GraphQL destekli bir uygulamadır. Statik ve istemci tabanlı bir React uygulaması geliştirmek için kullanabilirsiniz.
- GraphiQL: Tarayıcıyla entegre olan ve aynı zamanda GraphQL'in API'si ile etkileşime giren bir kimliktir. GraphiQL'in içerdiği işlevlerden bazıları mutasyonlar, veri sorgulama ve otomatik tamamlama sorgularıdır.
- GraphQL Oyun Alanı: Mutasyonları, doğrulamayı, GraphQl sorgularını, abonelikleri vb. işlemek için yerleşik bir düzenleyiciye sahip güçlü bir IDE'dir. Geliştirici bu IDE'yi şemanın yapısını görselleştirmek için kullanabilir.
- Prisma: Prisma, veritabanlarınızı CRUD (Oluşturma, Okuma, Güncelleme ve Silme) işlemleriyle GraphQL API'lerine dönüştüren bir veritabanı soyutlama katmanıdır.
- Bit: Yeniden kullanılabilir kodları bileşenlere dönüştüren açık kaynaklı bir araç ve platformdur. Geliştiriciler bunları çeşitli projeleri paylaşmak ve geliştirmek için kullanabilir.
ÖZET
- GraphQL, Facebook tarafından mevcut verilerle sorgu yürütmek için geliştirilen bir uygulama katmanı sunucu tarafı teknolojisidir.
- Tek bir API çağrısıyla veri almak için GraphQL'i kullanabilirsiniz.
- GraphQL, mobil uygulamanın performansını artırmanıza yardımcı olur.
- Önemli GraphQL sorgu bileşenleri şunlardır: 1) Sorgu, 2) Çözümleyici, 3) Şema.
- GraphQL güçlü bir şekilde yazılmıştır. Bu, sorguların belirli bir sistem bağlamında yürütüldüğü anlamına gelir.
- GraphQL istemcisi, ilgili GraphQL Sunucusuna POST istekleri gönderen bir koddur.
- GraphQL sunucuları, GraphQL spesifikasyonunun sunucu tarafında uygulanmasıdır.
- Ağ Geçidi, diğer arka uç hizmetleriyle başa çıkmak için ayrı bir hizmet oluşturabileceğiniz bir mikro hizmet modelidir.
- GraphQL'in dinamik değerleri sorgudan ayırmanın iyi bir yolu vardır.
- Mutasyon, GraphQL'deki veri kümesini değiştirmenin bir yoludur.
- GraphQL tasarlarken önemli noktalar şunlardır: 1) Adlandırma, 2) Özgüllük, 3) Giriş nesnesinin benzersiz veri yükü türü ve 4) Yuvalama.
- GraphQL bir şemaya göre organize edilebilirken, REST uç noktalara göre organize edilebilir.
- GraphQL'in dezavantajı arka uç kısmında kaynak eksikliğidir.