MazgasJS

Įvadas į „GraphQL“ API ir programų kūrimą mazge.js

Įvadas į „GraphQL“ API ir programų kūrimą mazge.js

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ą.

[apsaugotas el. paštas]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiverse "| sudo tee / etc / apt / sources.sąrašą.d / mongodb-org-4.4.sąrašą

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-org

Paleiskite 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 --save

MongoDB 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 importavimas
const 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ės
const 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.

„WinMouse“ leidžia tinkinti ir pagerinti pelės žymeklio judėjimą „Windows“ kompiuteryje
Jei norite pagerinti numatytąsias pelės žymiklio funkcijas, naudokite nemokamą programinę įrangą „WinMouse“. Tai prideda daugiau funkcijų, kurios padė...
Pelės kairiuoju pelės mygtuku mygtukas neveikia „Windows 10“
Jei naudojate specialią pelę su savo nešiojamuoju kompiuteriu arba staliniu kompiuteriu, tačiau neveikia pelės kairysis mygtukas dėl tam tikrų priežas...
Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...