Node.js ve GraphQL İle Veri Sorgulama

Node.js ve GraphQL İle Veri Sorgulama

Nodejs ve GraphQL ile veri sorgulama işlemleri oldukça kolay ve esnektir Nodejs, sunucu tarafı uygulamaları için kullanılan ve JavaScript tabanlı bir platformdur GraphQL ise veri sorgulama dilidir ve REST API'lerine göre daha esnek bir yapıya sahiptir GraphQL query'leri, REST API'lerinden daha az network isteğiyle karmaşık veri yapısına erişebilmenize olanak sağlar Bunun yanı sıra, fragment'ler özelliği sayesinde kodun tekrarlanması önlenir ve daha düzenli ve okunabilir kodlar yazmanız sağlanır Bu yazıda, Nodejs ve GraphQL ile veri sorgulama işlemlerinin nasıl gerçekleştirileceği ayrıntılı olarak ele alınmaktadır

Node.js ve GraphQL İle Veri Sorgulama

Bu makalede Node.js ve GraphQL ile veri sorgulama konusu ele alınacaktır. Node.js, JavaScript tabanlı bir platformdur ve sunucu tarafı uygulamalar yazmak için kullanılabilir. GraphQL ise, REST API'leri yerine kullanılabilen bir veri sorgulama dili olarak karşımıza çıkar.

GraphQL query'leri, REST API'lerinden çok daha esnektir ve veri istemek için kullanılır. Bu query'ler, istenen veri öğelerini sorgulamak için field'lar kullanır ve tekrarlanan kodu azaltmak için fragment'ler özelliğini kullanabilirsiniz. Ayrıca GraphQL mutasyonları veritabanı güncellemeleri için kullanılır ve HTTP'in PUT ve DELETE metodlarına benzemektedir.

Node.js ile GraphQL birleştiğinde, veri sorgulama işlemleri harika bir şekilde gerçekleştirilir. Sonraki adımlarımızda; gereksinimlerin kurulması, veritabanının oluşturulması, Node.js uygulamasının oluşturulması, GraphQL Schema'nın oluşturulması, resolver fonksiyonlarının kodlanması ve son olarak uygulamanın test edilmesi aşamaları ele alınacaktır. Bu aşamalar sayesinde, Node.js ve GraphQL ile veri sorgulama işlemlerinizi kolayca gerçekleştirebilirsiniz.


Node.js Nedir?

Node.js, sunucu tarafı uygulamaları için kullanılan ve JavaScript tabanlı bir platformdur. Node.js, Google'ın V8 JavaScript motorunu kullanır ve bu sayede uygulama performansını arttırır. Node.js, asenkron programlama yapısına sahip olduğu için aynı anda birden fazla işlem yapılabilir.

Node.js, web sitelerinin yanı sıra web uygulamalarının da geliştirilmesinde kullanılır. Node.js ile birlikte Express.js framework kullanılarak web uygulamaları geliştirilebilir. Node.js, veri tabanı işlemleri için de kullanılabilir. Bu sayede bir veritabanına bağlanıp, veri ekleme, veri silme, veri güncelleme gibi işlemler gerçekleştirilebilir.


GraphQL Nedir?

GraphQL, veri sorgulama dilidir ve REST API'leri için alternatif bir çözümdür. REST API'ler için kullanılan endpointler yerine tek bir GraphQL endpoint kullanılır. Bu endpoint ile istenen verilerin sorgulanması yapılabilir ve REST API'lere göre daha esnek bir yapıya sahiptir. GraphQL, belirtilen sorgulara göre sadece istenilen verileri döndürdüğü için gereksiz veri transferi yapılmaz.

GraphQL ayrıca REST API'lerdeki tek istek-tek cevap modelinden farklı olarak birden fazla istek yapılabilmesine izin verir. Bu özellik özellikle mobil uygulama gibi bağlantı sorunları yaşayabilecek platformlarda performansı önemli ölçüde artırır.

  • GraphQL'in avantajlarından bazıları şunlardır:
  • Esnek bir yapıya sahiptir ve birden fazla istek yapılabilmesine imkan verir.
  • Belirtilen verilerin sorgulu herhangi bir veriyi gereksiz olarak yüklemek yerine yalnızca istenen verileri döndürür.
  • Tek bir endpoint kullanır ve tek istekle birden çok veri alabilme imkanı sağlar.

GraphQL, özellikle büyük ve karmaşık veri tabanlarında kullanımı kolay ve verimli bir yönlendirme imkanı sağlar. Veritabanlarını güncellemek, arama yapmak, filtre yapmak ve diğer tüm veri sorgulama işlemleri GraphQL ile kolayca gerçekleştirilebilir.

Genel olarak, REST API'lerden daha esnek bir yapıya sahip olan GraphQL, geliştiricilere daha fazla özgürlük ve performans sunar.


GraphQL Query'leri

GraphQL, veri sorgulama dilidir ve veri istemek için kullanılan query'leri REST API'lerine göre çok daha esnektir. Query'ler, istenen veri öğelerini sorgulamak için field'lar kullanır. Bu özelliği sayesinde, REST API'lerine göre daha az sayıda network isteği gönderilerek çok daha karmaşık veri yapısı elde edilebilir. Ayrıca, birden fazla endpoint kullanmak yerine sadece tek bir endpoint kullanılması sayesinde de daha az kod yazılabilir.

GraphQL'in bir diğer özelliği ise, fragment'leri kullanarak tekrarlayan kodu azaltmasıdır. Fragment'ler, query içinde aynı veri öğelerini sorguladığımız durumlarda, bu öğeleri tekrar yazmak yerine bir fragment oluşturarak kodun daha kolay okunur hale gelmesini sağlar.


Field'lar

GraphQL query'leri, istenen verileri sorgulamak için field'lar kullanır. Field'lar, sorgulanacak verilerin isimlerini içeren anahtarlar gibidir. Örneğin, bir kullanıcının adını, soyadını ve e-posta adresini sorguladığınızda, bu alanları ayrı ayrı sorgulamanız gerekmez. Bunun yerine, sadece "query {user {firstname, lastname, email}}" şeklinde bir çözüm yapabilirsiniz.

Field'lar, birbirlerine gömülebilir ve birden fazla veri kaynağına bağlantı kurmak için kullanılabilir. Örneğin, iki farklı API'den aynı sayfadan bilgi almak isteyebilirsiniz. Bu durumda, GraphQL'in field yönlendirme özelliğini kullanarak, farklı kaynaklardan verileri toplayabilirsiniz. Aynı zamanda, field'lar, verilerinizi filtrelemek veya sıralamak için de kullanılabilir.

GraphQL'in field'ları REST API'lere göre daha esnektir. Bunun nedeni, REST API'lerinin sabit yapıda olması ve bir istek listesinin her zaman aynı veriyi döndürmesidir. Ancak, GraphQL sorguları, istenen verilere göre dinamik olarak değişir ve gereksinimlere göre veri akışlarını sağlayabilir.


Fragment'ler

GraphQL sorgularında, bazı alanlar birden fazla sorguda tekrar edilebilir. Bu durumda, kodun tekrarlanmasını önlemek için fragment'ler kullanılabilir. Fragment'ler, istenilen alanları tek bir blokta tanımlamamızı sağlar ve bu blok daha sonra birden fazla sorguda kullanılabilir. Bu sayede kodun tekrarlanması önlenir ve daha düzenli ve okunabilir kodlar yazabiliriz. Unutulmamalıdır ki, fragment'ler sadece query'lerde değil, aynı zamanda mutation'lar ve subscription'lar gibi tüm GraphQL isteklerinde kullanılabilir.


GraphQL Mutasyonları

GraphQL mutasyonları, veritabanı güncellemeleri için kullanılır ve HTTP'in PUT ve DELETE metodlarına benzemektedir.

GraphQL mutasyonları, veritabanı güncellemeleri için kullanılabilen GraphQL özellikleridir. Mutasyonlar, HTTP'in PUT ve DELETE metodlarına benzemektedir ve veritabanındaki verilerin ekleme, güncelleme veya silinmesine izin verirler. GraphQL mutasyonları, çalışma zamanında GraphQL sunucusuna gönderilen değişiklikler için bir yöntem olarak kullanılabilir.

Mutasyonlar, GraphQL query'lerine benzer bir sözdizimine sahiptir. Ancak, query'ler ile farklı olarak, mutasyonlarda değişiklik yapılacak veritabanı nesnesi ve bu nesneye uygulanacak işlem belirtilir. GraphQL mutasyonları, veritabanına yapılan değişikliklerin geri dönüş değerlerini de döndürebilir.

Örneğin, bir kullanıcının profil sayfasında yer alan fotoğrafını değiştirmek istediğinizde GraphQL mutasyonlarından yararlanabilirsiniz. İlgili mutasyonda, değiştirilecek fotoğrafın ID'si ve yeni fotoğrafın URL'si gibi bilgiler verilir. Sunucu, mutasyonu aldıktan sonra veritabanında ilgili kaydı güncelleyerek sonucu geri döndürür.


Node.js ve GraphQL Uygulaması

Web geliştirme, son yıllarda oldukça popüler hale geldi ve bu konuya yatırım yapan birçok şirket, müşterilerine daha iyi hizmet sunmaktadır. Bu noktada, Node.js ve GraphQL teknolojilerinin kullanımı oldukça yaygınlaşmıştır. Bu bölümde, Node.js ve GraphQL kullanarak basit bir uygulama nasıl oluşturulur, adım adım açıklanacaktır.

İlk olarak, Node.js ve GraphQL gereksinimlerinin yüklenmesi gerekmektedir. Daha sonra, bir veritabanı oluşturulmalıdır. Gerekli kurulumlar tamamlandıktan sonra, Node.js uygulaması oluşturulabilir. Bu adımda, GraphQL Schema oluşturulur ve resolver fonksiyonları kodlanır. Son adımda ise, uygulama test edilir.

Adım Açıklama
1 Node.js ve GraphQL gereksinimlerinin yüklenmesi
2 Veritabanının oluşturulması
3 Node.js uygulamasının oluşturulması
4 GraphQL Schema'nın oluşturulması
5 Resolver fonksiyonlarının kodlanması
6 GraphQL uygulamasının test edilmesi

Görüldüğü gibi, Node.js ve GraphQL kullanarak bir uygulama oluşturmak oldukça kolaydır. Gereksinimlerin yüklenmesi, veritabanının oluşturulması, Node.js uygulamasının oluşturulması, GraphQL Schema'nın oluşturulması, resolver fonksiyonlarının kodlanması ve son olarak uygulamanın test edilmesi olmak üzere altı adımdan oluşur.


Gereksinimlerin Kurulması

Node.js ve GraphQL kullanarak veri sorgulama, uygulamanın geliştirilmesi için öncelikle bazı gereksinimlerin yüklenmesini gerektirir. Bu gereksinimler, Node.js ve GraphQL'in yüklü olmasıdır. Node.js, JavaScript tabanlı bir platformdur ve sunucu tarafı uygulamaları yazmak için kullanılabilir. GraphQL ise veri sorgulama dilidir ve REST API'leri için bir alternatif olarak kullanılabilir.

Node.js'in yüklenmesi kullanılan işletim sistemine göre değişebilir. Örneğin, MacOS işletim sistemi için Node.js'in yüklenmesi Homebrew aracılığıyla gerçekleştirilebilir. GraphQL'in yüklenmesi ise npm paket yöneticisi aracılığıyla gerçekleştirilebilir. Gereksinimlerin doğru bir şekilde yüklenmesi için işletim sistemine göre farklı kurulum yöntemleri uygulanabileceği için doğru kaynakları kullanmak önemlidir.


Veritabanının Oluşturulması

Node.js ve GraphQL ile veri sorgulamanın nasıl gerçekleştirildiğini öğrendikten sonra, bir uygulama geliştirirken ilk adım veritabanının oluşturulmasıdır. Veritabanı, uygulamanın temel yapısıdır ve veri saklama ve yönetme işlemlerinin gerçekleştirildiği yerdir. GraphQL, birden fazla veritabanını destekleyebilir; ancak bu makalede MongoDB kullanacağız.

MongoDB, NoSQL veritabanıdır ve özellikle büyük ve dağınık verilerin saklanmasında kullanılır. MongoDB kurulumu için öncelikle resmi web sitesindeki indirme bölümünden ilgili MongoDB kurulum dosyasını indirip kurmanız gerekmektedir. Kurulum tamamlandıktan sonra, komut satırına "mongod" yazarak MongoDB sunucusuna bağlanabilirsiniz.

Bir veritabanı oluşturmak için komut satırından "use" komutunu kullanabilirsiniz. Örneğin; "use mydatabase" komutu ile "mydatabase" adında bir veritabanı oluşturabilirsiniz. Sonrasında, veritabanında kullanılacak herhangi bir collection oluşturabilirsiniz. Collection'lar MongoDB'de verilerin bulunduğu yerlerdir. "db.createCollection('users')" komutu ile "users" adında bir collection oluşturabilirsiniz.

Bunun yanı sıra, yapılandırılmış veri tipleri için veri modeli tanımlanması gereklidir. Örneğin, kullanıcılar için "users" adında bir veri modeli tanımlayabilirsiniz. Bu veri modelinde, kullanıcı adı, e-posta, şifre vb. alanlar bulunabilir. Veri modeli tanımlamak, verilerin düzenli ve yapılandırılmış bir şekilde saklanmasını sağlar.


Node.js Uygulamasının Oluşturulması

GraphQL ve Node.js ile uygulama geliştirme yolu ile veri sorgulama konusunda daha derin bir anlayışa sahip olabilirsiniz. Bu nedenle, bir Node.js uygulaması oluşturmak adına ilk önce bu yapıların kurulması gerekmektedir. Node.js uygulama çatısını Azure benzeri bir bulut hizmeti sağlayıcısı üzerinde de kurabilirsiniz.

Ancak, önce Node.js'in yüklü olması gerekmektedir. Node.js, platformunuz için uygun bir yükleme paketi ile mevcuttur. Bu nedenle, uygun bir yükleme paketini seçip Node.js'in yüklenmesi gerekmektedir. Uygulama oluşturulduktan sonra, GraphQL dosyaları da ilave edilebilir.


GraphQL Schema'nın Oluşturulması

GraphQL uygulamasında yer alan tüm sorguların ve mutasyonların nasıl kullanılacağı, bunların tipi ve amacı, GraphQL schema tarafından tanımlanır. Bu nedenle, bir GraphQL uygulamasının oluşturulması aşamasında, Schema'nın oluşturulması büyük önem taşır.

GraphQL schema; query, mutation, subscription ve object türleri olarak adlandırılan dört ana bileşenden oluşur. query, uygulamanın sorgulama yeteneğini temsil ederken, mutation verilerin güncellenmesi için kullanılır. Subscription, gerçek zamanlı verilerin alınması için kullanılırken, object türleri, uygulamada yer alan tüm nesneleri temsil ederler.

GraphQL Schema, uygulamadaki tüm verilerin nasıl alınacağı ve güncelleneceğine dair talimatlar içerir. Schema oluşturulurken grapQLObjectType ve GraphQLSchema sınıfları kullanılır ve şema, kullanıcıların sorgulama yapabileceği tüm alanları belirler.

GraphQL uygulaması için Schema'nın oluşturulması, resolver fonksiyonlarının doğru çalışması için olmazsa olmazdır. Bu nedenle, her bir sorgu ve mutasyon için gerekli alanlar ve şartlarını belirlemek, uygulamanın başarılı bir şekilde çalışması için önemlidir.


Resolver Fonksiyonlarının Kodlanması

GraphQL uygulamalarında resolver fonksiyonları, schema içinde belirtilen sorgu ve mutasyonları işleyen işlevlerdir. Bu fonksiyonlar, sorguda belirtilen field'ların verilerini döndüren JavaScript kodlarıdır. Bunlar, bir GraphQL sorgusu çalıştırıldığında hangi verilerin geri döndürüleceğine karar verir.

Resolver fonksiyonlarının, şema içinde bulunan field'ların dışında da kullanımı mümkündür. Örneğin, birden fazla schema birleştirildiğinde resolver fonksiyonları, farklı şemalardan gelen verileri birleştirerek sonuçları döndürür.

Resolver fonksiyonlarının kodlanması, GraphQL uygulamasının nasıl çalışacağını belirler. Bunun için, her field için bir resolver fonksiyonu oluşturulması gerekmektedir. Query ve mutasyonların her biri için ayrı ayrı resolver fonksiyonları yazılmalıdır. Resolver fonksiyonları, verilerin doğru şekilde alınabilmesi için uygun şekilde yapılandırılmalıdır.

GraphQL uygulamasında resolver fonksiyonlarının yanı sıra middleware fonksiyonları da kullanılabilir. Bu fonksiyonlar, gelen sorguların doğru şekilde işlenmesine yardımcı olur. Resolver fonksiyonlarının yanı sıra, bu fonksiyonları da dikkatli bir şekilde kodlamak önemlidir. Çünkü yanlış yapılandırılmış bir middleware veya resolver fonksiyonu, uygulamanın doğru şekilde çalışmasını engelleyebilir.


GraphQL Uygulamasının Test Edilmesi

GraphQL uygulamasının doğru çalıştığından emin olmak için testler yapılması gerekmektedir. Testler, uygulamanın her yönüyle doğru çalıştığından emin olmak için kullanılır.

Bir GraphQL uygulamasını test etmenin birçok yolu vardır. Testler en iyi şekilde uygulamanın farklı parçalarını test ederek gerçekleştirilebilir.

Bunun yanı sıra, belirlenen tüm sorgu ve mutasyonların doğru şekilde çalıştığından emin olmak için testler de gerçekleştirilebilir. Örneğin, bir kullanıcının ekleme veya güncelleme işleminin başarıyla tamamlandığı doğrulandıktan sonra, veritabanındaki bu değişiklikleri görüntülemek için veri sorguları da yapılabilir.

GraphQL uygulaması test edilirken, hataların da tespit edilmesi gerekmektedir. Hataların tespiti sayesinde, uygulamanın daha iyi bir hale getirilmesi için uyarlamalar yapılabilir.

Bir GraphQL uygulaması test edilirken, testlerin otomatik olarak gerçekleştirilmesi de mümkündür. Otomatik testler, her güncelleme yapıldığında veya kod değişikliği yapıldığında kontrol edilmek için kullanılabilir. Bu şekilde, hatalar hızlı bir şekilde tespit edilebilir ve çözüme kavuşturulabilir.