NodeJS

Bevezetés a GraphQL API-k és alkalmazások csomópontban történő elkészítésébe.js

Bevezetés a GraphQL API-k és alkalmazások csomópontban történő elkészítésébe.js

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.

[e-mail védett]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiverse "| sudo tee / etc / apt / sources.lista.d / mongodb-org-4.4.lista

Frissítse a helyi adattárakat.

[e-mail védett]: ~ $ sudo apt-get update -y

Telepítse a mongodb csomagot.

[e-mail védett]: ~ $ sudo apt-get install -y mongodb-org

Indí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 --save

A 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ása
const 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ása
const 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ása
const 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.

A legjobb parancssori játékok Linuxhoz
A parancssor nem csak a legnagyobb szövetséges a Linux használatakor, hanem a szórakozás forrása is lehet, mert sok olyan szórakoztató játék lejátszás...
A legjobb Gamepad Mapping alkalmazások Linuxhoz
Ha egy tipikus billentyűzet és egér beviteli rendszer helyett szeretnél játékokat játszani Linuxon egy játékvezérlővel, van néhány hasznos alkalmazás ...
Hasznos eszközök Linux játékosok számára
Ha szeretsz Linuxon játszani, akkor valószínű, hogy olyan alkalmazásokat és segédprogramokat használtál, mint a Wine, a Lutris és az OBS Studio a játé...