Komunikacija in prenos podatkov med čelnim delom in zaledjem katere koli aplikacije poteka prek API-jev (vmesnik za programiranje aplikacij). Obstaja veliko različnih vrst API-jev, ki se uporabljajo za komunikacijo med sprednjimi in zalednimi aplikacijami, kot so RESTful API, SOAP API, GraphQL API itd. API GraphQL je razmeroma nova tehnologija in je veliko hitrejši od drugih vrst API-jev, ki so na voljo. Pridobivanje podatkov iz baze podatkov s pomočjo GraphQL api je veliko hitrejše kot API REST. Med uporabo API-ja GraphQL ima odjemalec nadzor nad pridobivanjem le zahtevanih podatkov, namesto da bi dobil vse podrobnosti; zato GraphQL API deluje hitreje kot REST API.
Nameščanje paketov
Zgradili bomo vozlišče.js z uporabo API-ja GraphQL, zato moramo namestiti vozlišče.js in npm za to pred začetkom projekta.
[e-pošta zaščitena]: ~ $ sudo apt-get update -y[zaščiteno po e-pošti]: ~ $ sudo apt-get install nodejs
[e-pošta zaščitena]: ~ $ sudo apt-get install npm
Nastavitev projekta
Uporabili bomo ogrodje 'express' iz vozlišča.js za izdelavo naše aplikacije. Ustvarite imenik z imenom 'graphql' in začnite projekt.
[e-pošta zaščitena]: ~ $ mkdir graphql[zaščiteno po e-pošti]: ~ $ cd graphql /
[e-pošta zaščitena]: ~ $ npm init -y
MongoDB Setup
V našem projektu GraphQL bomo kot bazo podatkov uporabili MongoDB. MongoDB je podatkovna baza brez sheme in podatke shranjuje v obliki parov ključev. Če želite namestiti mongoDB, sledite spodnjim korakom.
Uvozite javni GPG ključ za MongoDB.
[e-pošta zaščitena]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.asc | sudo apt-key add -
Ustvarite datoteko s seznamom za mongodb.
Posodobite lokalne repozitorije.
[e-pošta zaščitena]: ~ $ sudo apt-get update -yNamestite paket mongodb.
[zaščiteno po e-pošti]: ~ $ sudo apt-get install -y mongodb-orgZaženite in omogočite mongod.storitev.
[e-pošta zaščitena]: ~ $ sudo systemctl start mongod.storitev[e-pošta zaščitena]: ~ $ sudo systemctl omogoči mongod.storitev
Namestitev modulov npm
Za našo aplikacijo GraphQL moramo namestiti nekaj paketov npm. Namestili bomo cors, express, parser za telo, mungo itd.
[zaščiteno po e-pošti]: ~ $ cd graphql /[e-pošta zaščitena]: ~ $ npm namestite cors express body-parser mongoose --save
Če želite ustvariti GraphQL api, moramo namestiti dodaten paket npm z imenom 'apollo-server-express.'Ta paket npm se uporablja za zagon strežnika graphQL z vsemi vozlišči.js HTTP okviri, kot je 'express."
[e-pošta zaščitena]: ~ $ npm namesti apollo-server-express --saveOpredelitev sheme MongoDB
Zdaj imamo okolje nastavljeno za našo aplikacijo GraphQL v Node.js in čas je, da določimo shemo za našo aplikacijo. Ustvari datoteko 'models / student.js 'v korenskem imeniku projekta.
// definiranje študentske shemeconst mongoose = require ('mongoose');
const studentSchema = nov mungos.Shema (
ime:
vrsta: niz,
obvezno: res
,
razred:
vrsta: Številka,
obvezno: res
,
glavni predmet:
vrsta: niz,
obvezno: res
,
časovni žigi: true
);
const Študent = mungos.model ('Student', studentSchema);
modul.izvoz = Študent, študentska shema
V zgoraj opredeljeni shemi mora imeti vsak študent ime, razred in glavni predmet.
Izdelava API-ja GraphQL
Po izdelavi študentske sheme bomo zdaj zgradili GraphQL API. Ustvari shemo.js 'za zapisovanje parametrov GraphQL. V GraphQL API-ju se uporabljata dva parametra, "tipi" in "razreševalci". V 'tipi' bomo določili našo shemo, poizvedbe (npr.g., Izdelava zahtev GET) in mutacije (npr.g., Izdelava zahtev za UPDATE ali DELETE) na določeno shemo. Za povezovanje poizvedb in mutacij z bazo podatkov v razreševalcih bomo zapisali različne metode, opredeljene v 'tipih'."
// uvoz sheme in modulaconst gql = require ('apollo-server-express');
const Študent = zahteva ('./ modeli / študent ').Študent;
// Določanje sheme, poizvedbe in vrste mutacije
const typeDefs = gql '
tip Študent
jaz sem!,
ime: Niz!,
razred: Int!,
glavni: String!
vnesite poizvedbo
getStudents: [Študent],
getStudentById (id: ID!): Študent
vrsta mutacije
addStudent (ime: String!, razred: Int!, glavni: String! ): Študent
updateStudent (ime: String!, razred: Int!, glavni: String! ): Študent
deleteStudent (id: ID! ): Študent
'
// Določanje razreševalcev
reševalci const =
Poizvedba:
getStudents: (nadrejeni, args) =>
vrnitev Študent.najti();
,
getStudentById: (nadrejeni, argumenti) =>
vrnitev Študent.findById (arg.id);
,
Mutacija:
addStudent: (nadrejeni, args) =>
naj študent = novi študent (
ime: args.ime,
razred: args.razred,
glavni: arg.major
);
študent vrnitve.shrani ();
,
updateStudent: (nadrejeni, args) =>
če (!argume.id) vrnitev;
vrnitev Študent.findOneAndUpdate (
_id: args.id
,
$ set:
ime: args.ime,
razred: args.razred,
glavni: arg.major
,
new: true, (napaka, študent) =>
če (napaka)
konzola.dnevnik (napaka);
drugače ;
)
modul.izvoz =
typeDefs,
reševalci
Ustvarjanje strežnika API GraphQL
Zdaj smo skoraj končali z ustvarjanjem aplikacije GraphQL. Preostane le še strežnik. Ustvarite datoteko z imenom 'app.js 'za konfiguriranje parametrov strežnika.
// uvoz potrebnih paketovconst express = require ('express');
const mongoose = require ('mongoose');
const bodyParser = require ('body-parser');
const cors = require ('cors');
const ApolloServer = require ('apollo-server-express');
// uvažanje sheme
const typeDefs, resolvers = require ('./ shema ');
// povezovanje z MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / študentje «;
const connect = mongoose.povezava (url, useNewUrlParser: true);
povezati.potem ((db) =>
konzola.log ('Povezava uspešna');
, (napaka) =>
konzola.dnevnik (napaka);
);
// ustvarjanje strežnika
strežnik const = nov ApolloServer (
typeDefs: typeDefs,
reševalci: reševalci
);
const app = express ();
app.uporaba (bodyParser.json ());
app.uporaba ('*', cors ());
strežnik.applyMiddleware (app);
app.poslušaj (8000, () =>
konzola.dnevnik ('poslušanje 8000');
)
Testiranje API-ja GraphQL
Naš strežnik graphQL deluje in deluje na vratih 8000 in čas je, da preizkusimo API GraphQL. Odprite spletno stran GraphQL v brskalniku, tako da obiščete naslednji URL.
http: // localhost: 8000 / graphql
In odprla se bo naslednja spletna stran.
Študenta dodajte v bazo podatkov z API-jem graphQL.
Podobno dodajte več študentov in po dodajanju študenta pridobite vse študente z uporabo API-ja GraphQL.
Upoštevajte ID katerega koli študenta in pridobite določenega študenta z uporabo njegovega id.
Zaključek
Pridobivanje podatkov iz baze podatkov s standardnim API-jem REST poizveduje počasi, saj včasih dobimo več podatkov, kot je zahtevano. Z uporabo GraphQL-a lahko pridobimo natančno zahtevane podatke, ki pospešujejo API-je GraphQL. V tem predstavitvenem projektu imamo samo eno shemo, zato smo za to eno shemo ustvarili GraphQL API. Za shemo smo določili tudi tri do štiri metode. Glede na aplikacijo lahko ustvarite več poizvedb ali mutacij.