NodeJS

Pengenalan Membuat API dan Aplikasi GraphQL di Node.js

Pengenalan Membuat API dan Aplikasi GraphQL di Node.js

Komunikasi dan pemindahan data antara front end dan backend aplikasi berlaku melalui API (Antaramuka Pengaturcaraan Aplikasi). Terdapat banyak jenis API yang digunakan untuk berkomunikasi antara aplikasi depan dan belakang seperti RESTful API, SOAP API, GraphQL API, dll. API GraphQL adalah teknologi yang agak baru, dan jauh lebih pantas daripada jenis API lain yang tersedia. Mengambil data dari pangkalan data menggunakan GraphQL api jauh lebih pantas daripada REST API. Semasa menggunakan GraphQL API, klien mempunyai kawalan untuk mengambil hanya data yang diperlukan dan bukannya mendapatkan semua perincian; sebab itulah API GraphQL berfungsi lebih pantas daripada REST API.

Memasang Pakej

Kami akan membina nod.aplikasi js menggunakan API GraphQL, jadi kita perlu memasang node.js dan npm untuk ini sebelum memulakan projek.

[dilindungi e-mel]: ~ $ sudo apt-get kemas kini -y
[dilindungi e-mel]: ~ $ sudo apt-get install nodejs
[dilindungi e-mel]: ~ $ sudo apt-get install npm

Menyiapkan Projek

Kami akan menggunakan kerangka 'express' dari simpul.js untuk membina aplikasi kami. Buat direktori bernama 'graphql' dan mulakan projek.

[dilindungi e-mel]: ~ $ mkdir graphql
[dilindungi e-mel]: ~ $ cd graphql /
[dilindungi e-mel]: ~ $ npm init -y

Persediaan MongoDB

Dalam projek GraphQL kami, kami akan menggunakan MongoDB sebagai pangkalan data kami. MongoDB adalah pangkalan data tanpa skema dan menyimpan data dalam bentuk pasangan kunci. Untuk memasang mongoDB, ikuti langkah-langkah yang diberikan.

Import kunci GPG awam untuk MongoDB.

[dilindungi e-mel]: ~ $ wget -qO - https: // www.mongodb.org / statik / pgp / pelayan-4.4.asc | sudo apt-key tambah -


Buat fail senarai untuk mongodb.

[dilindungi e-mel]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiverse "| sudo tee / etc / apt / sumber.senarai.d / mongodb-org-4.4.senarai

Kemas kini repositori tempatan.

[dilindungi e-mel]: ~ $ sudo apt-get kemas kini -y

Pasang pakej mongodb.

[dilindungi e-mel]: ~ $ sudo apt-get install -y mongodb-org

Mulakan dan aktifkan mongod.perkhidmatan.

[dilindungi e-mel]: ~ $ sudo systemctl mulakan mongod.perkhidmatan
[dilindungi e-mel]: ~ $ sudo systemctl mengaktifkan mongod.perkhidmatan

Memasang Modul npm

Untuk aplikasi GraphQL kami, kami perlu memasang beberapa pakej npm. Kami akan memasang cors, express, body-parser, mongoose, dll.

[dilindungi e-mel]: ~ $ cd graphql /
[dilindungi e-mel]: ~ $ npm pasang cors express body-parser mongoose --save

Untuk membuat api GraphQL, kita perlu memasang pakej npm tambahan bernama 'apollo-server-express.'Pakej npm ini digunakan untuk menjalankan pelayan graphQL dengan semua Node.js kerangka HTTP seperti 'express.'

[dilindungi e-mel]: ~ $ npm pasang apollo-server-express --save

Mendefinisikan Skema MongoDB

Sekarang kita telah mengatur persekitaran kita untuk aplikasi GraphQL kita di Node.js, dan inilah masanya untuk menentukan skema untuk aplikasi kita. Buat model / pelajar fail.js 'dalam direktori root projek.

// menentukan skema pelajar
const mongoose = memerlukan ('mongoose');
const studentSchema = mongoose baru.Skema (
nama:
jenis: Rentetan,
diperlukan: benar
,
kelas:
taip: Nombor,
diperlukan: benar
,
utama:
jenis: Rentetan,
diperlukan: benar

,
cap masa: benar
);
const Pelajar = luwak.model ('Pelajar', studentSchema);
modul.eksport = Pelajar, pelajarSkema

Dalam skema yang ditentukan di atas, setiap pelajar mesti mempunyai nama, kelas, dan jurusan.

Membina API GraphQL

Setelah membuat skema Pelajar, kita sekarang akan membina API GraphQL. Buat skema '.js 'untuk menulis parameter GraphQL. Terdapat dua parameter, 'jenis' dan 'penyelesai', yang digunakan dalam GraphQL API. Dalam 'jenis', kami akan menentukan skema kami, pertanyaan (e.g., Membuat permintaan GET), dan mutasi (e.g., Membuat UPDATE atau DELETE permintaan) ke skema yang ditentukan. Kami akan menulis kaedah yang berbeza yang ditentukan dalam 'jenis' untuk menghubungkan pertanyaan dan mutasi dengan pangkalan data dalam 'penyelesaian.'

// mengimport skema dan modul
const gql = memerlukan ('apollo-server-express');
const Pelajar = memerlukan ('./ model / pelajar ').Pelajar;
// Mendefinisikan Skema, Pertanyaan, dan Jenis Mutasi
const typeDefs = gql '
taip Pelajar
saya telah lakukan!,
nama: Rentetan!,
kelas: Int!,
utama: Rentetan!

taip Pertanyaan
getStudents: [Pelajar],
getStudentById (id: ID!) Pelajar

jenis Mutasi
addStudent (nama: Rentetan!, kelas: Int!, utama: Rentetan! ) Pelajar
updateStudent (nama: Rentetan!, kelas: Int!, utama: Rentetan! ) Pelajar
deleteStudent (id: ID! ) Pelajar
'
// Mendefinisikan Penyelesaian
pemecah const =
Pertanyaan:
getStudents: (ibu bapa, args) =>
kembali Pelajar.cari();
,
getStudentById: (ibu bapa, args) =>
kembali Pelajar.findById (berhujah.ID);

,
Mutasi:
addStudent: (induk, args) =>
biarkan pelajar = Pelajar baru (
nama: berhujah.nama,
kelas: berhujah.kelas,
utama: berhujah.utama
);
pelajar balik.simpan ();
,
updateStudent: (induk, args) =>
sekiranya (!berhujah.id) kembali;
kembali Pelajar.cariOneAndUpdate (
_id: berhujah.ID
,

$ set:
nama: berhujah.nama,
kelas: berhujah.kelas,
utama: berhujah.utama

,
baru: benar, (err, Pelajar) =>
jika (salah)
konsol.log (err);
lain ;
)



modul.eksport =
jenisDefs,
penyelesai

Membuat Server API GraphQL

Sekarang kita hampir selesai membuat Aplikasi GraphQL. Satu-satunya langkah yang tinggal adalah membuat pelayan. Buat fail bernama 'app.js 'untuk mengkonfigurasi parameter pelayan.

// mengimport pakej yang diperlukan
const express = memerlukan ('express');
const mongoose = memerlukan ('mongoose');
const bodyParser = memerlukan ('body-parser');
const cors = memerlukan ('cors');
const ApolloServer = memerlukan ('apollo-server-express');
// mengimport skema
const typeDefs, resolvers = memerlukan ('./ skema ');
// menyambung ke MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / pelajar ”;
const connect = luwak.sambung (url, useNewUrlParser: true);
menyambung.maka ((db) =>
konsol.log ('Sambungan Berjaya');
, (err) =>
konsol.log (err);
);
// membuat pelayan
pelayan const = ApolloServer baru (
typeDefs: typeDefs,
penyelesai: penyelesai
);
aplikasi const = express ();
aplikasi.gunakan (bodyParser.json ());
aplikasi.gunakan ('*', kors ());
pelayan.applyMiddleware (app);
aplikasi.dengar (8000, () =>

konsol.log ('mendengar 8000');
)

Menguji API GraphQL

Kami mempunyai pelayan graphQL dan beroperasi di port 8000, dan inilah masanya untuk menguji API GraphQL. Buka laman web GraphQL di penyemak imbas dengan melayari url berikut.

http: // localhost: 8000 / graphql

Dan ia akan membuka laman web berikut.


Tambahkan pelajar ke pangkalan data menggunakan API grafik.


Begitu juga, tambahkan lebih banyak pelajar, dan setelah menambahkan pelajar itu, dapatkan semua pelajar menggunakan GraphQL API.


Perhatikan ID mana-mana Pelajar dan dapatkan pelajar tertentu menggunakan idnya.

Kesimpulannya

Mengambil data dari pangkalan data menggunakan REST API standard menjadikan pertanyaan menjadi perlahan kerana kadang-kadang kita mendapat lebih banyak data daripada yang diperlukan. Dengan menggunakan GraphQL, kita dapat mengambil data yang diperlukan dengan tepat yang menjadikan API GraphQL lebih cepat. Dalam projek demo ini, kami hanya mempunyai satu skema, jadi kami telah membuat API GraphQL untuk skema tunggal itu. Kami juga telah menentukan tiga hingga empat kaedah untuk skema. Anda boleh membuat lebih daripada satu pertanyaan atau mutasi mengikut aplikasi anda.

Pasang Dolphin Emulator terkini untuk Gamecube & Wii di Linux
Dolphin Emulator membolehkan anda memainkan permainan Gamecube & Wii pilihan anda di Komputer Peribadi Linux (PC). Menjadi emulator permainan sumber ...
Cara Menggunakan Mesin Cheat GameConqueror di Linux
Artikel ini merangkumi panduan mengenai penggunaan mesin cheat GameConqueror di Linux. Ramai pengguna yang bermain permainan di Windows sering menggun...
Emulator Konsol Permainan Terbaik untuk Linux
Artikel ini akan menyenaraikan perisian emulasi konsol permainan popular yang tersedia untuk Linux. Emulation adalah lapisan keserasian perisian yang ...