MezglsJS

Ievads GraphQL API un lietotņu izveidē mezglā.js

Ievads GraphQL API un lietotņu izveidē mezglā.js

Saziņa un datu pārsūtīšana starp jebkuras lietojumprogrammas priekšējo daļu un aizmuguri notiek, izmantojot API (lietojumprogrammu saskarne). Ir daudz dažādu veidu API, ko izmanto, lai sazinātos starp priekšējām un aizmugurējām lietojumprogrammām, piemēram, RESTful API, SOAP API, GraphQL API utt. GraphQL API ir salīdzinoši jauna tehnoloģija, un tā ir daudz ātrāka nekā citi pieejamie API veidi. Datu iegūšana no datu bāzes, izmantojot GraphQL api, ir daudz ātrāka nekā REST API. Izmantojot GraphQL API, klientam ir kontrole, lai iegūtu tikai nepieciešamos datus, nevis iegūtu visu informāciju; tāpēc GraphQL API darbojas ātrāk nekā REST API.

Pakotņu instalēšana

Mēs izveidosim mezglu.js lietojumprogramma, izmantojot GraphQL API, tāpēc mums jāinstalē mezgls.js un npm tam pirms projekta uzsākšanas.

[e-pasts aizsargāts]: ~ $ sudo apt-get update -y
[e-pasts aizsargāts]: ~ $ sudo apt-get install nodejs
[e-pasts aizsargāts]: ~ $ sudo apt-get install npm

Projekta iestatīšana

Mēs izmantosim “express” ietvaru no mezgla.js, lai izveidotu mūsu lietojumprogrammu. Izveidojiet direktoriju ar nosaukumu 'graphql' un sāciet projektu.

[aizsargāts ar e-pastu]: ~ $ mkdir graphql
[aizsargāts ar e-pastu]: ~ $ cd graphql /
[aizsargāts ar e-pastu]: ~ $ npm init -y

MongoDB iestatīšana

Mūsu GraphQL projektā mēs izmantosim MongoDB kā savu datu bāzi. MongoDB ir bezmatu datu bāze, kurā dati tiek glabāti atslēgu pāru veidā. Lai instalētu mongoDB, veiciet norādītās darbības.

Importējiet MongoDB publisko GPG atslēgu.

[e-pasts aizsargāts]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.asc | sudo apt-key pievienot -


Izveidojiet mongodb saraksta failu.

[aizsargāts pa e-pastu]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiverse "| sudo tee / etc / apt / sources.sarakstā.d / mongodb-org-4.4.sarakstā

Atjauniniet vietējos krātuves.

[e-pasts aizsargāts]: ~ $ sudo apt-get update -y

Instalējiet mongodb pakotni.

[aizsargāts pa e-pastu]: ~ $ sudo apt-get install -y mongodb-org

Sāciet un iespējojiet mongodu.apkalpošana.

[aizsargāts ar e-pastu]: ~ $ sudo systemctl start mongod.apkalpošana
[aizsargāts ar e-pastu]: ~ $ sudo systemctl iespējot mongodu.apkalpošana

Npm moduļu instalēšana

Mūsu GraphQL lietojumprogrammai mums jāinstalē daži npm pakotnes. Mēs uzstādīsim cors, express, body-parser, mongoose utt.

[aizsargāts ar e-pastu]: ~ $ cd graphql /
[aizsargāts ar e-pastu]: ~ $ npm install cors express body-parser mongoose --save

Lai izveidotu GraphQL api, mums jāinstalē papildu npm pakete ar nosaukumu 'apollo-server-express.'Šo npm pakotni izmanto, lai palaistu graphQL serveri ar visu Node.js HTTP ietvari, piemēram, 'express."

[aizsargāts ar e-pastu]: ~ $ npm instalējiet apollo-server-express --save

MongoDB shēmas definēšana

Tagad mūsu mezglā ir iestatīta vide GraphQL lietojumprogrammai.js, un ir pienācis laiks definēt shēmu mūsu lietojumprogrammai. Izveidojiet faila modeļus / studentu.js 'projekta saknes direktorijā.

// studentu shēmas definēšana
const mongoose = pieprasīt ('mongoose');
const studentSchema = jauns mangusts.Shēma (
nosaukums:
tips: Stīga,
obligāti: taisnība
,
klase:
tips: Skaits,
obligāti: taisnība
,
vairākums:
tips: Stīga,
obligāti: taisnība

,
laika zīmogi: taisnība
);
const Students = mongoose.modelis ('Students', studentSchema);
modulis.eksports = Students, studentSchema

Iepriekš definētajā shēmā katram studentam jābūt vārdam, klasei un specialitātei.

GraphQL API veidošana

Pēc Studentu shēmas izveides mēs tagad izveidosim GraphQL API. Izveidojiet shēmu.js 'rakstīt GraphQL parametrus. GraphQL API tiek izmantoti divi parametri: “veidi” un “izšķirtspējas”. Sadaļā “veidi” mēs norādīsim mūsu shēmu, vaicājumus (piemēram,.g., GET pieprasījumu iesniegšana) un mutācijas (piemēram,.g., UPDATE vai DELETE pieprasījumu veikšana) norādītajai shēmai. Mēs rakstīsim dažādas metodes, kas definētas “tipos”, lai vaicājumus un mutācijas saistītu ar datu bāzi “resolvers”."

// shēmas un moduļa importēšana
const gql = pieprasīt ('apollo-server-express');
const Students = pieprasīt ('./ modeļi / students ').Students;
// Shēmas, vaicājuma un mutācijas veida definēšana
const typeDefs = gql '
tips Students
ES izdarīju!,
nosaukums: Stīga!,
klase: vid!,
majors: Stīga!

ievadiet vaicājumu
getStudents: [students],
getStudentById (id: ID!): Students

tips Mutācija
addStudent (nosaukums: String!, klase: vid!, majors: Stīga! ): Students
updateStudent (nosaukums: String!, klase: Int!, majors: Stīga! ): Students
deleteStudent (id: ID! ): Students

// Definēt risinātājus
const resolvers =
Vaicājums:
getStudents: (vecāks, argumenti) =>
atgriešanās Students.atrast ();
,
getStudentById: (vecāks, argumentē) =>
atgriešanās Students.findById (argumenti.id);

,
Mutācija:
addStudent: (vecāks, argumenti) =>
let student = new Student (
nosaukums: args.nosaukums,
klase: args.klasē,
majors: args.vairākums
);
atgriešanās students.saglabāt ();
,
updateStudent: (vecāks, argumenti) =>
ja (!argumentē.id) atgriešanās;
atgriešanās Students.findOneAndUpdate (
_id: argumenti.id
,

$ set:
nosaukums: args.nosaukums,
klase: args.klasē,
majors: args.vairākums

,
new: true, (kļūdīties, students) =>
ja (kļūdīties)
konsole.žurnāls (kļūdīties);
cits ;
)



modulis.eksports =
typeDefs,
risinātāji

GraphQL API servera izveide

Tagad mēs esam gandrīz pabeiguši izveidot GraphQL lietojumprogrammu. Vienīgais atlikušais solis ir servera izveide. Izveidojiet failu ar nosaukumu 'app.js ', lai konfigurētu servera parametrus.

// nepieciešamo paku importēšana
const express = pieprasīt ('express');
const mongoose = pieprasīt ('mongoose');
const bodyParser = pieprasīt ('ķermeņa parsētājs');
const cors = pieprasīt ('cors');
const ApolloServer = pieprasīt ('apollo-server-express');
// shēmas importēšana
const typeDefs, resolvers = pieprasīt ('./ shēma ');
// savienojums ar MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / studenti ”;
const savienot = mongoose.savienot (URL, useNewUrlParser: true);
savienot.tad ((db) =>
konsole.žurnāls ('Savienojums ir veiksmīgs');
, (kļūdīties) =>
konsole.žurnāls (kļūdīties);
);
// servera izveide
const serveris = jauns ApolloServer (
typeDefs: typeDefs,
atrisinātāji: risinātāji
);
const app = express ();
lietotne.izmantot (bodyParser.json ());
lietotne.izmantot ('*', korzes ());
serveris.ApplyMiddleware (app);
lietotne.klausīties (8000, () =>

konsole.žurnāls ('klausoties 8000');
)

Pārbauda GraphQL API

Mūsu grafQL serveris ir izveidots un darbojas 8000. portā, un ir pienācis laiks pārbaudīt GraphQL API. Pārlūkprogrammā atveriet GraphQL tīmekļa lapu, apmeklējot šo URL.

http: // localhost: 8000 / graphql

Un tas atvērs šādu tīmekļa lapu.


Pievienojiet studentu datu bāzei, izmantojot graphQL API.


Līdzīgi pievienojiet vairāk studentu un pēc studenta pievienošanas piesaistiet visus studentus, izmantojot GraphQL API.


Ievērojiet jebkura studenta ID un iegūstiet konkrēto studentu, izmantojot tā ID.

Secinājums

Datu iegūšana no datu bāzes, izmantojot standarta REST API, padara vaicājumu lēnu, jo dažreiz mēs iegūstam vairāk datu nekā nepieciešams. Izmantojot GraphQL, mēs varam iegūt tieši nepieciešamos datus, kas padara GraphQL API ātrāku. Šajā demonstrācijas projektā mums ir tikai viena shēma, tāpēc šai vienai shēmai esam izveidojuši GraphQL API. Arī mēs esam definējuši trīs līdz četras shēmas metodes. Saskaņā ar lietojumprogrammu varat izveidot vairākus vaicājumus vai mutācijas.

WinMouse ļauj jums pielāgot un uzlabot peles rādītāja kustību Windows datorā
Ja vēlaties uzlabot peles rādītāja noklusējuma funkcijas, izmantojiet bezmaksas programmatūru WinMouse. Tas pievieno vairāk funkciju, kas palīdzēs jum...
Peles kreisā klikšķa poga nedarbojas operētājsistēmā Windows 10
Ja ar klēpjdatoru vai galddatoru izmantojat īpašu peli, bet nedarbojas peles kreisās klikšķa poga kādu iemeslu dēļ operētājsistēmā Windows 10/8/7 šeit...
Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...