Komunikácia a prenos dát medzi frontendom a backendom akejkoľvek aplikácie prebieha prostredníctvom API (Application Programming Interface). Existuje mnoho rôznych typov rozhraní API používaných na komunikáciu medzi front-endovými aplikáciami, ako sú RESTful API, SOAP API, GraphQL API atď. GraphQL API je relatívne nová technológia a je oveľa rýchlejšia ako iné dostupné typy API. Načítanie údajov z databázy pomocou GraphQL api je oveľa rýchlejšie ako REST API. Pri používaní GraphQL API má klient kontrolu nad získavaním iba požadovaných údajov namiesto získania všetkých podrobností; preto GraphQL API funguje rýchlejšie ako REST API.
Inštalácia balíkov
Postavíme uzol.js aplikácia používajúca GraphQL API, takže musíme nainštalovať uzol.js a npm za to pred začatím projektu.
[chránené e-mailom]: ~ $ sudo apt-get update -y[chránené e-mailom]: ~ $ sudo apt-get install nodejs
[chránené e-mailom]: ~ $ sudo apt-get install npm
Nastavenie projektu
Použijeme rámec „express“ z uzla.js na zostavenie našej aplikácie. Vytvorte adresár s názvom „graphql“ a spustite projekt.
[chránené e-mailom]: ~ $ mkdir graphql[chránené e-mailom]: ~ $ cd graphql /
[chránené e-mailom]: ~ $ npm init -y
Nastavenie MongoDB
V našom projekte GraphQL použijeme ako svoju databázu MongoDB. MongoDB je databáza bez schémy a ukladá údaje vo forme dvojíc kľúčov. Pri inštalácii mongoDB postupujte podľa uvedených krokov.
Importujte verejný kľúč GPG pre MongoDB.
[chránené e-mailom]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.vzostup | sudo apt-key pridať -
Vytvorte súbor zoznamu pre mongodb.
Aktualizujte miestne úložiská.
[chránené e-mailom]: ~ $ sudo apt-get update -yNainštalujte si balíček mongodb.
[chránené e-mailom]: ~ $ sudo apt-get install -y mongodb-orgSpustite a povoľte mongod.služby.
[chránené e-mailom]: ~ $ sudo systemctl start mongod.služby[chránené e-mailom]: ~ $ sudo systemctl povoliť mongod.služby
Inštalácia npm modulov
Pre našu aplikáciu GraphQL musíme nainštalovať niekoľko balíkov npm. Nainštalujeme cors, express, body-parser, mongoose atď.
[chránené e-mailom]: ~ $ cd graphql /[chránené e-mailom]: ~ $ npm nainštalovať cors express body-parser mongoose - uložiť
Aby sme vytvorili GraphQL api, musíme si nainštalovať ďalší balíček npm s názvom 'apollo-server-express.„Tento balík npm sa používa na spustenie servera graphQL so všetkým uzlom.js HTTP rámce ako 'express.„
[chránené e-mailom]: ~ $ npm nainštalovať apollo-server-express --saveDefinovanie schémy MongoDB
Teraz máme naše prostredie nastavené pre našu aplikáciu GraphQL v Node.js, a je čas definovať schému pre našu aplikáciu. Vytvorte súbor 'models / student.js 'v koreňovom adresári projektu.
// definovanie študentskej schémyconst mongoose = require ('mongoose');
const studentSchema = nová mongoose.Schéma (
názov:
typ: Reťazec,
požadované: pravda
,
trieda:
typ: Číslo,
požadované: pravda
,
hlavný:
typ: Reťazec,
požadované: pravda
,
časové značky: pravda
);
konšt Študent = mongoose.model ('Študent', studentSchema);
modul.exporty = Študent, studentSchema
Vo vyššie definovanej schéme musí mať každý študent meno, triedu a hlavné smery.
Budovanie GraphQL API
Po vytvorení Študentskej schémy teraz zostavíme GraphQL API. Vytvorte schému.js 'na zápis parametrov GraphQL. V GraphQL API sa používajú dva parametre, 'typy' a 'prekladače'. V 'typoch' uvedieme našu schému, dotazy (napr.g., Vytváranie žiadostí GET) a mutácie (napr.g., Vytváranie požiadaviek UPDATE alebo DELETE) na zadanú schému. Napíšeme rôzne metódy definované v „typoch“ na prepojenie otázok a mutácií s databázou v „prekladačoch“.„
// import schémy a moduluconst gql = require ('apollo-server-express');
const Student = require ('./ models / student ').Študent;
// Definovanie schémy, dotazu a typu mutácie
const typeDefs = gql '
typ študent
urobil som!,
názov: Reťazec!,
trieda: Int!,
major: Reťazec!
zadajte dopyt
getStudents: [študent],
getStudentById (id: ID!): Študent
typ mutácia
addStudent (názov: String!, trieda: Int!, major: Reťazec! ): Študent
updateStudent (názov: String!, trieda: Int!, major: Reťazec! ): Študent
deleteStudent (id: ID! ): Študent
'
// Definovanie riešení
konštanta =
Dopyt:
getStudents: (parent, args) =>
návrat Študent.Nájsť();
,
getStudentById: (rodič, args) =>
návrat Študent.findById (argumenty.id);
,
Mutácia:
addStudent: (parent, args) =>
let student = new Student (
meno: args.názov,
trieda: args.trieda,
hlavný: args.major
);
návrat študent.uložiť ();
,
updateStudent: (parent, args) =>
ak (!args.id) návrat;
návrat Študent.findOneAndUpdate (
_id: args.id
,
$ set:
meno: args.názov,
trieda: args.trieda,
hlavný: args.major
,
new: true, (err, Student) =>
if (err)
konzola.log (chyba);
else ;
)
modul.exporty =
typeDefs,
riešitelia
Vytváranie servera GraphQL API
Teraz sme takmer hotoví s vytváraním aplikácie GraphQL. Jediným krokom, ktoré zostáva, je vytvorenie servera. Vytvorte súbor s názvom „aplikácia“.js 'na konfiguráciu parametrov servera.
// import požadovaných balíkovconst express = require ('express');
const mongoose = require ('mongoose');
const bodyParser = require ('body-parser');
const cors = require ('cors');
const ApolloServer = require ('apollo-server-express');
// import schémy
const typeDefs, resolvers = require ('./ schema ');
// pripojenie k MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / študenti “;
const connect = mongoose.connect (url, useNewUrlParser: true);
spojiť.potom ((db) =>
konzola.log ('Pripojenie bolo úspešné');
, (chyba) =>
konzola.log (chyba);
);
// vytváranie servera
const server = nový ApolloServer (
typeDefs: typeDefs,
riešitelia: riešitelia
);
const app = express ();
aplikácia.použitie (bodyParser.json ());
aplikácia.use ('*', cors ());
server.applyMiddleware (app);
aplikácia.počúvať (8000, () =>
konzola.log ('počúva 8000');
)
Testovanie GraphQL API
Náš graphQL server je funkčný na porte 8000 a je čas otestovať GraphQL API. Otvorte webovú stránku GraphQL v prehliadači navštívením nasledujúcej adresy URL.
http: // localhost: 8000 / graphql
A otvorí sa nasledujúca webová stránka.
Pridajte študenta do databázy pomocou GraphQL API.
Podobne pridajte ďalších študentov a po pridaní študenta získajte všetkých študentov pomocou GraphQL API.
Poznačte si ID ktoréhokoľvek zo študentov a získajte konkrétneho študenta pomocou jeho ID.
Záver
Načítanie údajov z databázy pomocou štandardného rozhrania REST API robí dopyt pomalý, pretože niekedy získame viac údajov, ako je potrebné. Pomocou GraphQL dokážeme načítať presne požadované údaje, ktoré zrýchľujú rozhranie GraphQL API. V tomto ukážkovom projekte máme iba jednu schému, takže sme pre túto schému vytvorili GraphQL API. Pre schému sme tiež definovali tri až štyri metódy. Podľa svojej aplikácie môžete vytvoriť viac ako jeden dotaz alebo mutácie.