Bendravimas ir duomenų perdavimas tarp bet kurios programos priekinės ir vidinės pusės vyksta per API (Application Programming Interface). Yra daugybė skirtingų tipų API, naudojamų bendraujant tarp priekinių ir galinių programų, pvz., RESTful API, SOAP API, GraphQL API ir kt. „GraphQL“ API yra palyginti nauja technologija, kuri yra daug greitesnė nei kitų tipų API. Duomenis iš duomenų bazės gauti naudojant GraphQL api yra daug greičiau nei REST API. Naudodamasis „GraphQL API“, klientas gali valdyti ne tik visą informaciją, bet ir reikalingus duomenis. todėl GraphQL API veikia greičiau nei REST API.
Paketų diegimas
Mes sukursime mazgą.js programa, naudojant GraphQL API, todėl turime įdiegti mazgą.js ir npm tam prieš pradedant projektą.
[apsaugotas el. paštas]: ~ $ sudo apt-get update -y[apsaugotas el. paštas]: ~ $ sudo apt-get install nodejs
[apsaugotas el. paštas]: ~ $ sudo apt-get install npm
Projekto nustatymas
Mes naudosime „express“ sistemą iš mazgo.js sukurti mūsų programą. Sukurkite katalogą pavadinimu „graphql“ ir pradėkite projektą.
[apsaugotas el. paštas]: ~ $ mkdir graphql[apsaugotas el. paštas]: ~ $ cd graphql /
[apsaugotas el. paštas]: ~ $ npm init -y
„MongoDB“ sąranka
Savo „GraphQL“ projekte kaip duomenų bazę naudosime „MongoDB“. „MongoDB“ yra bešemė duomenų bazė, kurioje duomenys saugomi raktų porų pavidalu. Norėdami įdiegti „mongoDB“, atlikite nurodytus veiksmus.
Importuokite viešąjį „MongoDB“ GPG raktą.
[apsaugotas el. paštas]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.asc | sudo apt-key pridėti -
Sukurkite mongodb sąrašo failą.
Atnaujinkite vietines saugyklas.
[apsaugotas el. paštas]: ~ $ sudo apt-get update -yĮdiekite „mongodb“ paketą.
[apsaugotas el. paštu]: ~ $ sudo apt-get install -y mongodb-orgPaleiskite ir įgalinkite mongodą.paslaugą.
[apsaugotas el. pašto adresas]: ~ $ sudo systemctl start mongod.paslaugą[email protected]: ~ $ sudo systemctl įgalinti mongodą.paslaugą
Npm modulių diegimas
Savo GraphQL programai turime įdiegti keletą npm paketų. Mes įdiegsime korsus, express, body-parser, mongoose ir kt.
[apsaugotas el. paštu]: ~ $ cd graphql /[apsaugotas el. paštu]: ~ $ npm install cors express body-parser mongoose - save
Norėdami sukurti „GraphQL“ api, turime įdiegti papildomą npm paketą pavadinimu „apollo-server-express."Šis npm paketas naudojamas paleisti graphQL serverį su visu mazgu.js HTTP sistemos, pvz., „express“."
[apsaugotas el. paštas]: ~ $ npm įdiegti apollo-server-express --saveMongoDB schemos apibrėžimas
Dabar mes turime sukūrę savo aplinką „GraphQL“ programai „Node“.js, ir atėjo laikas apibrėžti mūsų programos schemą. Sukurkite failą „modeliai / studentas“.js 'projekto šakniniame kataloge.
// apibrėžiant studentų schemąconst mongoose = reikalauti ('mongoose');
const studentSchema = nauja mangusta.Schema (
vardas:
tipas: styginiai,
reikalaujama: tiesa
,
klasė:
tipas: Skaičius,
reikalaujama: tiesa
,
majoras:
tipas: styginiai,
reikalaujama: tiesa
,
laiko žymės: tiesa
);
const Studentas = mangustas.modelis ('Studentas', studentSchema);
modulis.eksportas = Student, studentSchema
Pagal aukščiau apibrėžtą schemą kiekvienas studentas turi turėti vardą, klasę ir specialybę.
„GraphQL“ API kūrimas
Sukūrę „Student“ schemą, dabar sukursime „GraphQL“ API. Sukurkite schemą.js 'rašyti GraphQL parametrus. Yra du parametrai: „tipai“ ir „skiriamieji elementai“, naudojami „GraphQL API“. „Tipuose“ nurodysime savo schemą, užklausas (pvz.,.g., GET užklausų teikimas) ir mutacijos (el.g., Atnaujinti arba ištrinti užklausas) pagal nurodytą schemą. Parašysime skirtingus metodus, apibrėžtus „tipuose“, kad užklausas ir mutacijas susietume su „resolvers“ duomenų baze."
// schemos ir modulio importavimasconst gql = reikalauti ('apollo-server-express');
const Student = reikalauti ('./ modeliai / studentas ').Studentas;
// Schemos, užklausos ir mutacijos tipo apibrėžimas
const typeDefs = gql '
tipas Studentas
aš padariau!,
vardas: Stygos!,
klasė: tarpt!,
majoras: stygos!
įveskite užklausą
„getStudents“: [studentas],
getStudentById (id: ID!): Studentas
tipas mutacija
addStudent (vardas: eilutė!, klasė: tarpt!, majoras: stygos! ): Studentas
updateStudent (vardas: eilutė!, klasė: tarpt!, majoras: stygos! ): Studentas
deleteStudent (ID: ID! ): Studentas
// Sprendėjų apibrėžimas
const resolvers =
Užklausa:
„getStudents“: (tėvas, argumentai) =>
grįžti Studentas.rasti ();
,
getStudentById: (tėvas, argumentai) =>
grįžti Studentas.„findById“ (argumentai.id);
,
Mutacija:
addStudent: (tėvas, argumentai) =>
tegul studentas = naujas studentas (
vardas: argumentai.vardas,
klasė: argumentai.klasė,
majoras: argumentai.majoras
);
grįžęs studentas.sutaupyti();
,
„updateStudent“: (tėvas, argumentai) =>
jei (!argumentuoja.id) grįžti;
grįžti Studentas.findOneAndUpdate (
_id: argumentai.id
,
$ set:
vardas: argumentai.vardas,
klasė: argumentai.klasė,
majoras: argumentai.majoras
,
new: true, (klysti, Studentas) =>
jei (klysti)
konsolė.žurnalas (klysti);
Kitas ;
)
modulis.eksportas =
typeDefs,
sprendėjai
„GraphQL“ API serverio kūrimas
Dabar mes beveik baigėme kurti „GraphQL“ programą. Liko vienintelis žingsnis - sukurti serverį. Sukurkite failą pavadinimu „programa“.js 'konfigūruoti serverio parametrus.
// importuojamos reikalingos pakuotėsconst express = reikalauti ('express');
const mongoose = reikalauti ('mongoose');
const bodyParser = reikalauti ('body-parser');
const cors = reikalauti ('cors');
const ApolloServer = reikalauti ('apollo-server-express');
// schemos importavimas
const typeDefs, resolvers = reikalauti ('./ schema ');
// prisijungimas prie MongoDB
const url = „mongodb: // 127.0.0.1: 27017 / studentai “;
const prisijungti = mangustas.prisijungti (URL, useNewUrlParser: true);
Prisijungti.tada ((db) =>
konsolė.žurnalas („Prisijungimas sėkmingas“);
, (klysti) =>
konsolė.žurnalas (klysti);
);
// serverio kūrimas
const serveris = naujas „ApolloServer“ (
typeDefs: typeDefs,
sprendėjai: sprendėjai
);
const programa = express ();
programa.naudoti (bodyParser.json ());
programa.use ('*', cors ());
serverio.ApplyMiddleware (app);
programa.klausytis (8000, () =>
konsolė.žurnalas („klausosi 8000“);
)
„GraphQL“ API testavimas
„GraphQL“ serveris veikia ir veikia 8000 prievade, todėl laikas išbandyti „GraphQL“ API. Naršyklėje atidarykite „GraphQL“ tinklalapį apsilankę šiame URL.
http: // localhost: 8000 / graphql
Ir jis atidarys šį tinklalapį.
Pridėkite mokinį prie duomenų bazės naudodami graphQL API.
Panašiai pridėkite daugiau studentų ir, pridėję studentą, gaukite visus studentus naudodami „GraphQL“ API.
Atkreipkite dėmesį į bet kurio studento ID ir gaukite konkretų studentą naudodami jo ID.
Išvada
Gaunant duomenis iš duomenų bazės naudojant standartinę REST API, užklausa tampa lėta, nes kartais gauname daugiau duomenų nei reikia. Naudodami „GraphQL“ galime gauti tiksliai reikiamus duomenis, todėl „GraphQL“ API tampa greitesnė. Šiame demonstraciniame projekte mes turime tik vieną schemą, todėl šiai vienai schemai sukūrėme GraphQL API. Be to, mes apibrėžėme nuo trijų iki keturių schemos metodų. Pagal savo programą galite sukurti daugiau nei vieną užklausą ar mutacijas.