DüğümJS

Düğümde GraphQL API'leri ve Uygulamaları Yapmaya Giriş.js

Düğümde GraphQL API'leri ve Uygulamaları Yapmaya Giriş.js

Herhangi bir uygulamanın ön ucu ve arka ucu arasındaki iletişim ve veri aktarımı API'ler (Uygulama Programlama Arayüzü) aracılığıyla gerçekleşir. RESTful API, SOAP API, GraphQL API, vb. gibi ön ve arka uç uygulamalar arasında iletişim kurmak için kullanılan birçok farklı API türü vardır. GraphQL API nispeten yeni bir teknolojidir ve mevcut diğer API türlerinden çok daha hızlıdır. GraphQL api kullanarak veritabanından veri almak, REST API'sinden çok daha hızlıdır. GraphQL API'sini kullanırken istemci, tüm ayrıntıları almak yerine yalnızca gerekli verileri getirme kontrolüne sahiptir; bu nedenle GraphQL API, REST API'den daha hızlı çalışır.

Paketleri Yükleme

Bir düğüm oluşturacağız.GraphQL API kullanan js uygulaması, bu yüzden düğümü yüklememiz gerekiyor.projeye başlamadan önce bunun için js ve npm.

[e-posta korumalı]:~$ sudo apt-get update -y
[e-posta korumalı]:~$ sudo apt-get install nodejs
[e-posta korumalı]:~$ sudo apt-get install npm

Proje Kurulumu

Düğümden 'ekspres' çerçeveyi kullanacağız.js uygulamamızı oluşturmak için. 'graphql' adında bir dizin oluşturun ve projeyi başlatın.

[e-posta korumalı]:~$ mkdir graphql
[e-posta korumalı]:~$ cd graphql/
[e-posta korumalı]:~$ npm init -y

MongoDB Kurulumu

GraphQL projemizde veritabanımız olarak MongoDB kullanacağız. MongoDB şemasız bir veritabanıdır ve verileri anahtar çiftleri şeklinde depolar. mongoDB'yi kurmak için verilen adımları izleyin.

MongoDB için genel GPG anahtarını içe aktarın.

[e-posta korumalı]:~$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.artan | sudo apt-anahtar ekleme -


mongodb için liste dosyasını oluşturun.

[e-posta korumalı]:~$ echo "deb [arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 çoklu evren" | sudo tee /etc/apt/sources.liste.d/mongodb-org-4.4.liste

Yerel depoları güncelleyin.

[e-posta korumalı]:~$ sudo apt-get update -y

mongodb paketini kurun.

[e-posta korumalı]:~$ sudo apt-get install -y mongodb-org

Mongod'u başlatın ve etkinleştirin.hizmet.

[e-posta korumalı]:~$ sudo systemctl mongod'u başlat.hizmet
[e-posta korumalı]:~$ sudo systemctl mongod'u etkinleştir.hizmet

npm Modüllerini Yükleme

GraphQL uygulamamız için bazı npm paketleri kurmamız gerekiyor. Cors, express, body-parser, mongoose, vb. kuracağız.

[e-posta korumalı]:~$ cd graphql/
[e-posta korumalı]:~$ npm kurulum cors express body-parser firavun faresi --save

Bir GraphQL api oluşturmak için, 'apollo-server-express' adında fazladan bir npm paketi kurmamız gerekiyor.' Bu npm paketi, tüm Düğümlerle graphQL sunucusunu çalıştırmak için kullanılır.js HTTP çerçeveleri 'express' gibi.'

[e-posta korumalı]:~$ npm kurulum apollo-server-express --save

MongoDB Şemasını Tanımlama

Artık Node'da GraphQL uygulamamız için ortamımızı kurduk.js ve uygulamamız için bir şema tanımlamanın zamanı geldi. 'modeller/öğrenci' dosyası oluşturun.js' proje kök dizininde.

// öğrenci şemasını tanımlama
const firavun faresi = require('firavun faresi');
const StudentSchema = yeni firavun faresi.Şema(
isim:
tür: dize,
gerekli: doğru
,
sınıf:
Numara giriniz,
gerekli: doğru
,
ana:
tür: dize,
gerekli: doğru

,
zaman damgaları: doğru
);
const Öğrenci = firavun faresi.model('Öğrenci', öğrenciŞema);
modül.dışa aktarma = Student, StudentSchema

Yukarıda tanımlanan şemada her öğrencinin bir adı, sınıfı ve branşı olmalıdır.

GraphQL API'si Oluşturma

Öğrenci şemasını oluşturduktan sonra şimdi GraphQL API'sini oluşturacağız. Bir 'şema oluşturun.js' GraphQL parametrelerini yazmak için. GraphQL API'sinde kullanılan 'türler' ve 'çözücüler' olmak üzere iki parametre vardır. 'Türlerde', şemamızı, sorguları (e.g., GET istekleri yapma) ve mutasyonlar (e.g., Belirtilen şemaya GÜNCELLEME veya DELETE istekleri yapma). Sorguları ve mutasyonları veritabanına bağlamak için 'types' bölümünde tanımlanan farklı yöntemleri 'resolver'da yazacağız.'

// şema ve modülü içe aktarma
const gql = require('apollo-sunucu-ekspres');
const Öğrenci = gerekli ('./modeller/öğrenci').Öğrenci;
// Şema, Sorgu ve Mutasyon Tipinin Tanımlanması
const typeDefs = gql '
tip Öğrenci
yaptım!,
isim: Dize!,
sınıf: Int!,
majör: dize!

sorgu yazın
getStudents: [Öğrenci],
getStudentById(kimlik: kimlik!): Öğrenci

tip Mutasyon
addStudent (isim: Dize!, sınıf: Int!, majör: dize! ): Öğrenci
updateStudent( isim: String!, sınıf: Int!, majör: dize! ): Öğrenci
deleteStudent (kimlik: kimlik! ): Öğrenci
'
// Çözümleyicileri Tanımlama
const çözümleyiciler =
Sorgu:
getStudents: (ebeveyn, bağımsız değişkenler) =>
dönüş Öğrenci.bul();
,
getStudentById: (ebeveyn, bağımsız değişkenler) =>
dönüş Öğrenci.findById(argümanlar.İD);

,
mutasyon:
addStudent: (ebeveyn, bağımsız değişkenler) =>
olsun öğrenci = yeni Öğrenci(
isim: args.isim,
sınıf: argümanlar.sınıf,
majör: argümanlar.majör
);
dönüş öğrencisi.kayıt etmek();
,
updateStudent: (ebeveyn, bağımsız değişkenler) =>
Eğer(!argümanlar.id) dönüş;
dönüş Öğrenci.findOneAndUpdate(
_id: bağımsız değişkenler.İD
,

$ayar:
isim: args.isim,
sınıf: argümanlar.sınıf,
majör: argümanlar.majör

,
yeni: doğru , (hata, Öğrenci) =>
eğer(hata)
konsol.günlük(hata);
Başka ;
)



modül.dışa aktarma =
tipDefs,
çözücüler

GraphQL API Sunucusu Oluşturma

Artık GraphQL Uygulamasını oluşturmayı neredeyse bitirdik. Geriye kalan tek adım sunucuyu oluşturmak. 'app' adında bir dosya oluşturun.js' sunucu parametrelerini yapılandırmak için.

// gerekli paketleri içe aktarıyoruz
const ifade = zorunlu('ifade');
const firavun faresi = require('firavun faresi');
const bodyParser = require('body-parser');
const cors = require('korlar');
const ApolloServer = require('apollo-sunucu-ekspres');
// şema içe aktarılıyor
const typeDefs, çözümleyiciler = gerektirir('./şema');
// MongoDB'ye bağlanma
const url = “mongodb://127.0.0.1:27017/öğrenciler”;
const connect = firavun faresi.connect(url, useNewUrlParser: true );
bağlanmak.o zaman((db) =>
konsol.log('Bağlantı Başarılı');
, (hata) =>
konsol.günlük(hata);
);
// sunucu oluşturma
const server = new ApolloServer(
typeDefs: typeDefs,
çözümleyiciler: çözümleyiciler
);
const uygulama = ekspres();
uygulama.use(bodyParser.json());
uygulama.use('*', cors());
sunucu.applicationMiddleware( uygulama );
uygulama.dinle( 8000, () =>

konsol.log('8000'i dinliyorum');
)

GraphQL API'sini Test Etme

GraphQL sunucumuz 8000 numaralı bağlantı noktasında çalışır durumda ve GraphQL API'sini test etme zamanı geldi. Aşağıdaki url'yi ziyaret ederek tarayıcıda GraphQL web sayfasını açın.

http://localhost:8000/graphql

Ve aşağıdaki web sayfasını açacak.


GrafQL API kullanarak öğrenciyi veritabanına ekleyin.


Benzer şekilde, daha fazla öğrenci ekleyin ve öğrenciyi ekledikten sonra tüm öğrencileri GraphQL API kullanarak alın.


Herhangi bir Öğrencinin kimliğini not edin ve belirli öğrenciyi kimliğini kullanarak alın.

Sonuç

Standart REST API kullanarak veritabanından veri almak, bazen gerekenden daha fazla veri aldığımız için sorguyu yavaşlatır. GraphQL kullanarak, GraphQL API'sini daha hızlı hale getiren tam olarak gerekli verileri getirebiliriz. Bu demo projede sadece tek bir şemamız var, bu yüzden o tek şema için GraphQL API'sini oluşturduk. Ayrıca şema için üç ila dört yöntem tanımladık. Uygulamanıza göre birden fazla sorgu veya mutasyon oluşturabilirsiniz.

Linux Oyuncuları için Faydalı Araçlar
Linux'ta oyun oynamayı seviyorsanız, oyun deneyimini geliştirmek için Wine, Lutris ve OBS Studio gibi uygulamaları ve yardımcı programları kullanmış o...
Daha Önce Bir Linux Sürümü Olmayan Linux için HD Remastered Oyunlar
Birçok oyun geliştiricisi ve yayıncısı, franchise'ın ömrünü uzatmak için eski oyunların HD remaster'ı ile geliyor, lütfen modern donanımla uyumluluk i...
Linux Oyunlarını Otomatikleştirmek için AutoKey Nasıl Kullanılır?
AutoKey, Linux ve X11 için Python 3, GTK ve Qt'de programlanmış bir masaüstü otomasyon aracıdır. Komut dosyası oluşturma ve MAKRO işlevselliğini kulla...