A kommunikáció és az adatátvitel bármely alkalmazás kezelőfelülete és háttere között az API-k (Application Programming Interface) révén történik. Számos különböző típusú API-t használnak a kommunikációhoz az elülső és a háttéralkalmazások között, például RESTful API, SOAP API, GraphQL API stb. A GraphQL API egy viszonylag új technológia, és sokkal gyorsabb, mint a rendelkezésre álló más típusú API-k. Az adatok lekérése az adatbázisból a GraphQL api használatával sokkal gyorsabb, mint a REST API. A GraphQL API használata közben az ügyfélnek csak a szükséges adatok beolvasására van lehetősége az összes részlet megszerzése helyett; ezért a GraphQL API gyorsabban működik, mint a REST API.
Csomagok telepítése
Csomópontot építünk.js alkalmazás a GraphQL API segítségével, ezért telepítenünk kell a csomópontot.js és npm erre a projekt megkezdése előtt.
[e-mail védett]: ~ $ sudo apt-get update -y[email protected]: ~ $ sudo apt-get install nodejs
[e-mail védett]: ~ $ sudo apt-get install npm
A Project beállítása
A csomópontból származó 'expressz' keretet fogjuk használni.js az alkalmazásunk felépítéséhez. Hozzon létre egy 'graphql' nevű könyvtárat, és indítsa el a projektet.
[e-mail védett]: ~ $ mkdir graphql[e-mail védett]: ~ $ cd graphql /
[e-mail védett]: ~ $ npm init -y
MongoDB Setup
GraphQL projektünkben a MongoDB-t fogjuk használni adatbázisunkként. A MongoDB egy sémátlan adatbázis, amely kulcspárok formájában tárolja az adatokat. A mongoDB telepítéséhez kövesse a megadott lépéseket.
Importálja a MongoDB nyilvános GPG kulcsát.
[e-mail védett]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.asc | sudo apt-key add -
Hozza létre a mongodb listafájlját.
Frissítse a helyi adattárakat.
[e-mail védett]: ~ $ sudo apt-get update -yTelepítse a mongodb csomagot.
[e-mail védett]: ~ $ sudo apt-get install -y mongodb-orgIndítsa el és engedélyezze a mongodot.szolgáltatás.
[email protected]: ~ $ sudo systemctl start mongod.szolgáltatás[e-mail védett]: ~ $ sudo systemctl enable mongod.szolgáltatás
Az npm modulok telepítése
A GraphQL alkalmazásunkhoz telepítenünk kell néhány npm csomagot. Telepítünk cors, express, body-parser, mongúz stb.
[e-mail védett]: ~ $ cd graphql /[e-mail védett]: ~ $ npm install cors expressz body-parser mongúz - mentés
A GraphQL api létrehozásához telepítenünk kell egy további npm csomagot, az 'apollo-server-express nevet.'Ez az npm csomag a graphQL szerver futtatására szolgál az összes Node-tal.js HTTP keretrendszerek, mint az 'express."
[e-mail védett]: ~ $ npm install apollo-server-express --saveA MongoDB séma meghatározása
Most a Node-ban beállítottuk a környezetünket a GraphQL alkalmazásunkhoz.js, és itt az ideje meghatározni az alkalmazásunk sémáját. Hozzon létre egy fájlt 'modellek / tanuló.js 'a projekt gyökérkönyvtárában.
// a hallgatói séma meghatározásaconst mongúz = igény ('mongúz');
const studentSchema = új mongúz.Séma(
név:
típus: Húr,
szükséges: igaz
,
osztály:
típus: Szám,
szükséges: igaz
,
Jelentősebb:
típus: Húr,
szükséges: igaz
,
időbélyegek: igaz
);
const Student = mongúz.modell ('Student', studentSchema);
modul.export = Student, studentSchema
A fent definiált sémában minden hallgatónak rendelkeznie kell nevével, osztályával és szakával.
A GraphQL API építése
A Student séma létrehozása után felépítjük a GraphQL API-t. Hozzon létre egy 'sémát.js 'a GraphQL paraméterek megírásához. Két paraméter, a „típusok” és a „felbontók” használhatók a GraphQL API-ban. A 'típusokban' megadjuk a sémánkat, a lekérdezéseket (pl.g., GET kérések készítése) és mutációk (pl.g., UPDATE vagy DELETE kérések készítése) a megadott sémához. Megírjuk a „típusokban” definiált különböző módszereket, hogy összekapcsoljuk a lekérdezéseket és a mutációkat a 'resolvers' adatbázisával."
// séma és modul importálásaconst gql = need ('apollo-server-express');
const Student = szükség ('./ modellek / tanuló ').Diák;
// Séma, lekérdezés és mutáció típusának meghatározása
const typeDefs = gql '
type Student
én csináltam!,
név: Húr!,
osztály: Int!,
őrnagy: Húr!
type Query
getStudents: [Diák],
getStudentById (id: ID!): Diák
type Mutation
addStudent (név: String!, osztály: Int!, őrnagy: Húr! ): Diák
updateStudent (név: String!, osztály: Int!, őrnagy: Húr! ): Diák
deleteStudent (id: ID! ): Diák
'
// Megoldók meghatározása
const resolvers =
Lekérdezés:
getStudents: (szülő, érvel) =>
visszatérő Student.megtalálja();
,
getStudentById: (szülő, érvel) =>
visszatérő Student.findById (érvel.id);
,
Mutáció:
addStudent: (szülő, érvel) =>
let student = new Student (
név: arg.név,
osztály: érvel.osztály,
őrnagy: érvel.Jelentősebb
);
visszatérő hallgató.mentés();
,
updateStudent: (szülő, érvel) =>
ha(!érvel.id) visszatérés;
visszatérő Student.findOneAndUpdate (
_id: érvel.id
,
$ set:
név: arg.név,
osztály: érvel.osztály,
őrnagy: érvel.Jelentősebb
,
új: igaz, (tévedés, hallgató) =>
if (tévedés)
konzol.napló (tévedés);
más ;
)
modul.export =
typeDefs,
megoldók
GraphQL API Server létrehozása
Most már majdnem elkészültünk a GraphQL alkalmazás létrehozásával. Az egyetlen lépés a szerver létrehozása. Hozzon létre egy „alkalmazás” nevű fájlt.js 'a szerver paramétereinek konfigurálásához.
// a szükséges csomagok importálásaconst express = igényel ('express');
const mongúz = igény ('mongúz');
const bodyParser = igény ('body-parser');
const cors = igény ('cors');
const ApolloServer = igény ('apollo-server-express');
// séma importálása
const typeDefs, resolvers = szükség ('./séma');
// csatlakozás a MongoDB-hez
const url = “mongodb: // 127.0.0.1: 27017 / hallgatók ”;
const connect = mongúz.connect (url, useNewUrlParser: true);
csatlakozzon.akkor ((db) =>
konzol.napló ('Sikeres kapcsolat');
, (tévedés) =>
konzol.napló (tévedés);
);
// szerver létrehozása
const szerver = új ApolloServer (
typeDefs: typeDefs,
megoldók: megoldók
);
const app = express ();
kb.használat (bodyParser.json ());
kb.use ('*', cors ());
szerver.ApplyMiddleware (app);
kb.hallgatni (8000, () =>
konzol.napló ('8000 hallgatása');
)
A GraphQL API tesztelése
A grafQL kiszolgálónk már működik és fut a 8000-es porton, és itt az ideje tesztelni a GraphQL API-t. Nyissa meg a GraphQL weboldalt a böngészőben a következő URL látogatásával.
http: // localhost: 8000 / graphql
És megnyitja a következő weboldalt.
Add hozzá a hallgatót az adatbázishoz a graphQL API használatával.
Hasonlóképpen vegyen fel további hallgatókat, és miután hozzáadta a hallgatót, vegye fel az összes diákot a GraphQL API használatával.
Jegyezze fel bármelyik hallgató személyazonosító okmányát, és vegye be az adott tanuló azonosítóját.
Következtetés
Az adatok lekérése az adatbázisból a szokásos REST API használatával lassítja a lekérdezést, mivel néha a szükségesnél több adatot kapunk. A GraphQL használatával pontosan megkapjuk a szükséges adatokat, amelyek gyorsabbá teszik a GraphQL API-t. Ebben a bemutató projektben csak egyetlen sémánk van, ezért létrehoztuk a GraphQL API-t ehhez az egyetlen sémához. Három-négy módszert is meghatároztunk a sémához. Az alkalmazásnak megfelelően több lekérdezést vagy mutációt is létrehozhat.