Komunikacija i prijenos podataka između prednjeg kraja i pozadine bilo koje aplikacije odvija se putem API-ja (sučelje za programiranje aplikacija). Postoji mnogo različitih vrsta API-ja koji se koriste za komunikaciju između prednjih i stražnjih aplikacija poput RESTful API, SOAP API, GraphQL API itd. GraphQL API relativno je nova tehnologija i puno je brža od ostalih vrsta dostupnih API-ja. Preuzimanje podataka iz baze podataka pomoću GraphQL api mnogo je brže od REST API-ja. Dok koristi GraphQL API, klijent ima kontrolu nad dohvatom samo potrebnih podataka, umjesto da dobije sve detalje; zato GraphQL API radi brže od REST API-ja.
Instaliranje paketa
Izgradit ćemo čvor.js pomoću GraphQL API-ja, pa moramo instalirati čvor.js i npm za ovo prije pokretanja projekta.
[zaštićena e-poštom]: ~ $ sudo apt-get update -y[zaštićen e-poštom]: ~ $ sudo apt-get install nodejs
[zaštićen e-poštom]: ~ $ sudo apt-get install npm
Postavljanje projekta
Upotrijebit ćemo 'express' okvir iz čvora.js za izgradnju naše aplikacije. Stvorite direktorij pod nazivom 'graphql' i pokrenite projekt.
[e-pošta zaštićena]: ~ $ mkdir graphql[e-pošta zaštićena]: ~ $ cd graphql /
[e-pošta zaštićena]: ~ $ npm init -y
Postavljanje MongoDB-a
U našem GraphQL projektu koristit ćemo MongoDB kao svoju bazu podataka. MongoDB je baza podataka bez sheme i pohranjuje podatke u obliku parova ključeva. Da biste instalirali mongoDB, slijedite dane korake.
Uvezite javni GPG ključ za MongoDB.
[e-pošta zaštićena]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.uzlazno | sudo apt-key dodati -
Stvorite datoteku popisa za mongodb.
Ažurirajte lokalna spremišta.
[zaštićena e-poštom]: ~ $ sudo apt-get update -yInstalirajte mongodb paket.
[zaštićena e-poštom]: ~ $ sudo apt-get install -y mongodb-orgPokrenite i omogućite mongod.servis.
[zaštićena e-poštom]: ~ $ sudo systemctl start mongod.servis[zaštićena e-poštom]: ~ $ sudo systemctl omogući mongod.servis
Instaliranje npm modula
Za našu aplikaciju GraphQL moramo instalirati neke npm pakete. Instalirat ćemo cors, express, parser za tijelo, mungos itd.
[e-pošta zaštićena]: ~ $ cd graphql /[zaštićena e-poštom]: ~ $ npm install cors express body-parser mongoose --save
Da bismo stvorili GraphQL api, moramo instalirati dodatni npm paket pod nazivom 'apollo-server-express.'Ovaj npm paket koristi se za pokretanje graphQL poslužitelja sa svim čvorovima.js HTTP okviri poput 'express.'
[e-pošta zaštićena]: ~ $ npm instalirajte apollo-server-express --saveDefiniranje MongoDB sheme
Sada smo postavili svoje okruženje za našu aplikaciju GraphQL u Nodeu.js, a vrijeme je da definiramo shemu za našu aplikaciju. Stvorite datoteku 'models / student.js 'u korijenskom direktoriju projekta.
// definiranje studentske shemeconst mungos = zahtijeva ('mungos');
const studentSchema = novi mungos.Shema(
Ime:
vrsta: Niz,
potrebno: istinito
,
razred:
vrsta: Broj,
potrebno: istinito
,
glavni predmet:
vrsta: Niz,
potrebno: istinito
,
vremenske oznake: true
);
const Student = mungos.model ('Student', studentSchema);
modul.izvoz = Student, studentska shema
U gore definiranoj shemi svaki student mora imati ime, razred i glavni predmet.
Izrada API-ja GraphQL
Nakon stvaranja studentske sheme, sada ćemo izgraditi GraphQL API. Stvorite shemu.js 'za pisanje GraphQL parametara. Postoje dva parametra, "tipovi" i "razrješivači", koji se koriste u GraphQL API-ju. U "vrstama" odredit ćemo našu shemu, upite (npr.g., Izrada GET zahtjeva) i mutacije (npr.g., Izrada zahtjeva za UPDATE ili DELETE) na navedenu shemu. Napisat ćemo različite metode definirane u 'tipovima' kako bismo povezali upite i mutacije s bazom podataka u 'rješivačima'.'
// uvoz sheme i modulaconst gql = zahtijeva ('apollo-server-express');
const Student = zahtijeva ('./ modeli / student ').Student;
// Definiranje sheme, upita i vrste mutacije
const typeDefs = gql '
upišite Student
učinio sam!,
naziv: Niz!,
razred: Int!,
uža specijalnost: Gudač!
upišite upit
getStudents: [Student],
getStudentById (id: ID!): Student
type Mutation
addStudent (name: String!, razred: Int!, uža specijalnost: Gudač! ): Student
updateStudent (naziv: Niz!, razred: Int!, uža specijalnost: Gudač! ): Student
deleteStudent (id: ID! ): Student
'
// Definiranje rješavača
rješavači const =
Upit:
getStudents: (roditelj, argumenti) =>
povratak Student.pronaći();
,
getStudentById: (roditelj, argumenti) =>
povratak Student.findById (args.iskaznica);
,
Mutacija:
addStudent: (nadređeni, argumenti) =>
neka student = novi student (
naziv: args.Ime,
razred: args.razred,
uža specijalnost: svađe.majore
);
povratak student.uštedjeti();
,
updateStudent: (roditelj, argumenti) =>
ako(!svađe.id) povratak;
povratak Student.findOneAndUpdate (
_id: args.iskaznica
,
$ set:
naziv: args.Ime,
razred: args.razred,
uža specijalnost: svađe.majore
,
novo: istina, (pogreška, student) =>
if (err)
konzola.zapisnik (pogreška);
ostalo ;
)
modul.izvoz =
typeDefs,
rješavači
Stvaranje GraphQL API poslužitelja
Sada smo gotovo gotovi sa izradom GraphQL aplikacije. Preostaje još samo stvaranje poslužitelja. Stvorite datoteku pod nazivom 'app.js 'za konfiguriranje parametara poslužitelja.
// uvoz potrebnih paketaconst express = require ('express');
const mungos = zahtijeva ('mungos');
const bodyParser = require ('body-parser');
const cors = zahtijeva ('cors');
const ApolloServer = zahtijeva ('apollo-server-express');
// uvoz sheme
const typeDefs, resolvers = zahtijeva ('./shema');
// spajanje na MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / studenti ”;
const spojiti = mungos.povezivanje (url, useNewUrlParser: true);
Spojiti.tada ((db) =>
konzola.log ('Veza uspješna');
, (pogreška) =>
konzola.zapisnik (pogreška);
);
// stvaranje poslužitelja
const poslužitelj = novi ApolloServer (
typeDefs: typeDefs,
rješavači: rješavači
);
const app = express ();
app.koristiti (bodyParser.json ());
app.use ('*', cors ());
poslužitelju.applyMiddleware (app);
app.slušaj (8000, () =>
konzola.zapisnik ('slušanje 8000');
)
Testiranje GraphQL API-ja
Imamo naš GraphQL poslužitelj i radi na portu 8000, a vrijeme je da testiramo GraphQL API. Otvorite web stranicu GraphQL u pregledniku posjetom sljedećem urlu.
http: // localhost: 8000 / graphql
I otvorit će sljedeću web stranicu.
Dodajte učenika u bazu podataka koristeći graphQL API.
Slično tome, dodajte još učenika, a nakon dodavanja učenika uzmite sve studente pomoću GraphQL API-ja.
Zabilježite ID bilo kojeg od učenika i uzmite određenog učenika pomoću njegovog ID-a.
Zaključak
Dohvaćanje podataka iz baze podataka pomoću standardnog REST API-a usporava upit jer ponekad dobivamo više podataka nego što je potrebno. Korištenjem GraphQL-a možemo dohvatiti točno potrebne podatke koji čine GraphQL API bržim. U ovom demonstracijskom projektu imamo samo jednu shemu, pa smo stvorili GraphQL API za tu jednu shemu. Također, definirali smo tri do četiri metode za shemu. Možete stvoriti više upita ili mutacija prema vašoj aplikaciji.