Komunikace a přenos dat mezi frontendem a backendem jakékoli aplikace probíhá prostřednictvím API (Application Programming Interface). Existuje mnoho různých typů API používaných ke komunikaci mezi front-endovými aplikacemi, jako je RESTful API, SOAP API, GraphQL API atd. GraphQL API je relativně nová technologie a je mnohem rychlejší než jiné dostupné typy API. Načítání dat z databáze pomocí GraphQL api je mnohem rychlejší než REST API. Při používání GraphQL API má klient kontrolu nad získáváním pouze požadovaných dat namísto získání všech podrobností; proto GraphQL API funguje rychleji než REST API.
Instalace balíčků
Postavíme uzel.js aplikace používající GraphQL API, takže musíme nainstalovat uzel.js a npm za to před zahájením projektu.
[chráněno e-mailem]: ~ $ sudo apt-get update -y[chráněno e-mailem]: ~ $ sudo apt-get install nodejs
[chráněno e-mailem]: ~ $ sudo apt-get install npm
Nastavení projektu
Použijeme „expresní“ rámec z uzlu.js k sestavení naší aplikace. Vytvořte adresář s názvem 'graphql' a spusťte projekt.
[chráněno e-mailem]: ~ $ mkdir graphql[chráněno e-mailem]: ~ $ cd graphql /
[chráněno e-mailem]: ~ $ npm init -y
Nastavení MongoDB
V našem projektu GraphQL budeme jako naši databázi používat MongoDB. MongoDB je databáze bez schématu a ukládá data ve formě dvojic klíčů. Chcete-li nainstalovat mongoDB, postupujte podle uvedených kroků.
Importujte veřejný klíč GPG pro MongoDB.
[chráněno e-mailem]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.vzestup | sudo apt-key přidat -
Vytvořte soubor seznamu pro mongodb.
Aktualizujte místní úložiště.
[chráněno e-mailem]: ~ $ sudo apt-get update -yNainstalujte balíček mongodb.
[chráněno e-mailem]: ~ $ sudo apt-get install -y mongodb-orgSpusťte a povolte mongod.servis.
[chráněno e-mailem]: ~ $ sudo systemctl start mongod.servis[chráněno e-mailem]: ~ $ sudo systemctl povolit mongod.servis
Instalace modulů npm
Pro naši aplikaci GraphQL musíme nainstalovat nějaké balíčky npm. Nainstalujeme cors, express, body-parser, mongoose atd.
[chráněno e-mailem]: ~ $ cd graphql /[chráněno e-mailem]: ~ $ npm install cors express body-parser mongoose --save
Chcete-li vytvořit GraphQL api, musíme nainstalovat další balíček npm s názvem 'apollo-server-express.„Tento balíček npm se používá ke spuštění serveru GraphQL se všemi uzly.js HTTP rámce jako 'express.''
[chráněno e-mailem]: ~ $ npm nainstalujte apollo-server-express --saveDefinování schématu MongoDB
Nyní máme v Node nastaveno naše prostředí pro naši aplikaci GraphQL.js, a je čas definovat schéma pro naši aplikaci. Vytvořte soubor 'model / student.js 'v kořenovém adresáři projektu.
// definování studentského schématuconst mongoose = require ('mongoose');
const studentSchema = nová mongoose.Schéma(
název:
typ: Řetězec,
požadováno: pravda
,
třída:
typ: číslo,
požadováno: pravda
,
hlavní, důležitý:
typ: Řetězec,
požadováno: pravda
,
časová razítka: pravda
);
const Student = mongoose.model ('Student', studentSchema);
modul.exporty = Student, studentSchema
Ve výše definovaném schématu musí mít každý student jméno, třídu a obor.
Vytváření GraphQL API
Po vytvoření Studentského schématu nyní sestavíme GraphQL API. Vytvořte schéma.js 'pro zápis parametrů GraphQL. V GraphQL API se používají dva parametry, 'typy' a 'překladače'. V 'typech' specifikujeme naše schéma, dotazy (např.G., Vytváření požadavků GET) a mutace (např.G., Vytváření požadavků UPDATE nebo DELETE) na zadané schéma. Napíšeme různé metody definované v 'typech' pro propojení dotazů a mutací s databází v 'překladačech.''
// import schématu a moduluconst gql = require ('apollo-server-express');
const Student = require ('./ models / student ').Student;
// Definování schématu, dotazu a typu mutace
const typeDefs = gql '
typ student
udělal jsem!,
název: Řetězec!,
třída: Int!,
major: Řetězec!
zadejte dotaz
getStudents: [Student],
getStudentById (id: ID!): Student
typ mutace
addStudent (název: String!, třída: Int!, major: Řetězec! ): Student
updateStudent (název: String!, třída: Int!, major: Řetězec! ): Student
deleteStudent (id: ID! ): Student
'
// Definování překladačů
const resolers =
Dotaz:
getStudents: (rodič, args) =>
návrat Student.nalézt();
,
getStudentById: (rodič, args) =>
návrat Student.findById (args.id);
,
Mutace:
addStudent: (parent, args) =>
let student = new Student (
název: args.název,
třída: args.třída,
hlavní: args.hlavní, důležitý
);
návrat student.Uložit();
,
updateStudent: (parent, args) =>
li(!args.id) návrat;
návrat Student.findOneAndUpdate (
_id: args.id
,
$ set:
název: args.název,
třída: args.třída,
hlavní: args.hlavní, důležitý
,
new: true, (err, Student) =>
if (err)
řídicí panel.log (chyba);
else ;
)
modul.exporty =
typeDefs,
řešitelé
Vytvoření serveru GraphQL API
Nyní jsme téměř hotovi s vytvořením aplikace GraphQL. Jediným krokem, který zbývá, je vytvoření serveru. Vytvořte soubor s názvem „aplikace.js 'pro konfiguraci parametrů serveru.
// import požadovaných balíčkůconst express = require ('express');
const mongoose = require ('mongoose');
const bodyParser = require ('body-parser');
const cors = require ('cors');
const ApolloServer = require ('apollo-server-express');
// import schématu
const typeDefs, resolvers = require ('./schéma');
// připojení k MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / studenti “;
const connect = mongoose.connect (url, useNewUrlParser: true);
připojit.then ((db) =>
řídicí panel.log ('Připojení bylo úspěšné');
, (chyba) =>
řídicí panel.log (chyba);
);
// vytvoření serveru
const server = nový ApolloServer (
typeDefs: typeDefs,
řešitelé: řešitelé
);
const app = express ();
aplikace.použití (bodyParser.json ());
aplikace.use ('*', cors ());
serveru.applyMiddleware (app);
aplikace.poslouchat (8000, () =>
řídicí panel.log ('naslouchání 8000');
)
Testování GraphQL API
Náš GraphQL server je spuštěný na portu 8000 a je čas otestovat GraphQL API. Otevřete webovou stránku GraphQL v prohlížeči na následující adrese URL.
http: // localhost: 8000 / graphql
A otevře se následující webová stránka.
Přidejte studenta do databáze pomocí GraphQL API.
Podobně přidejte více studentů a po přidání studenta získejte všechny studenty pomocí GraphQL API.
Poznamenejte si ID kteréhokoli ze studentů a získejte konkrétního studenta pomocí jeho ID.
Závěr
Načítání dat z databáze pomocí standardního rozhraní REST API činí dotaz pomalý, protože někdy získáme více dat, než je požadováno. Pomocí GraphQL můžeme načíst přesně požadovaná data, díky nimž je GraphQL API rychlejší. V tomto ukázkovém projektu máme pouze jedno schéma, takže jsme pro toto jediné schéma vytvořili GraphQL API. Také jsme pro schéma definovali tři až čtyři metody. Podle vaší aplikace můžete vytvořit více než jeden dotaz nebo mutace.