NodeJS

Uvod u izradu GraphQL API-ja i aplikacija u čvoru.js

Uvod u izradu GraphQL API-ja i aplikacija u čvoru.js

Komunikacija i prijenos podataka između prednjeg kraja i pozadine bilo koje aplikacije odvija se putem API-ja (sučelje za programiranje aplikacija). Postoji mnogo različitih vrsta API-ja koji se koriste za komunikaciju između prednjih i stražnjih aplikacija poput RESTful API, SOAP API, GraphQL API itd. GraphQL API relativno je nova tehnologija i puno je brža od ostalih vrsta dostupnih API-ja. Preuzimanje podataka iz baze podataka pomoću GraphQL api mnogo je brže od REST API-ja. Dok koristi GraphQL API, klijent ima kontrolu nad dohvatom samo potrebnih podataka, umjesto da dobije sve detalje; zato GraphQL API radi brže od REST API-ja.

Instaliranje paketa

Izgradit ćemo čvor.js pomoću GraphQL API-ja, pa moramo instalirati čvor.js i npm za ovo prije pokretanja projekta.

[zaštićena e-poštom]: ~ $ sudo apt-get update -y
[zaštićen e-poštom]: ~ $ sudo apt-get install nodejs
[zaštićen e-poštom]: ~ $ sudo apt-get install npm

Postavljanje projekta

Upotrijebit ćemo 'express' okvir iz čvora.js za izgradnju naše aplikacije. Stvorite direktorij pod nazivom 'graphql' i pokrenite projekt.

[e-pošta zaštićena]: ~ $ mkdir graphql
[e-pošta zaštićena]: ~ $ cd graphql /
[e-pošta zaštićena]: ~ $ npm init -y

Postavljanje MongoDB-a

U našem GraphQL projektu koristit ćemo MongoDB kao svoju bazu podataka. MongoDB je baza podataka bez sheme i pohranjuje podatke u obliku parova ključeva. Da biste instalirali mongoDB, slijedite dane korake.

Uvezite javni GPG ključ za MongoDB.

[e-pošta zaštićena]: ~ $ wget -qO - https: // www.mongodb.org / static / pgp / server-4.4.uzlazno | sudo apt-key dodati -


Stvorite datoteku popisa za mongodb.

[e-pošta zaštićena]: ~ $ echo "deb [arch = amd64, arm64] https: // repo.mongodb.org / apt / ubuntu bionic / mongodb-org / 4.4 multiverse "| sudo tee / etc / apt / sources.popis.d / mongodb-org-4.4.popis

Ažurirajte lokalna spremišta.

[zaštićena e-poštom]: ~ $ sudo apt-get update -y

Instalirajte mongodb paket.

[zaštićena e-poštom]: ~ $ sudo apt-get install -y mongodb-org

Pokrenite i omogućite mongod.servis.

[zaštićena e-poštom]: ~ $ sudo systemctl start mongod.servis
[zaštićena e-poštom]: ~ $ sudo systemctl omogući mongod.servis

Instaliranje npm modula

Za našu aplikaciju GraphQL moramo instalirati neke npm pakete. Instalirat ćemo cors, express, parser za tijelo, mungos itd.

[e-pošta zaštićena]: ~ $ cd graphql /
[zaštićena e-poštom]: ~ $ npm install cors express body-parser mongoose --save

Da bismo stvorili GraphQL api, moramo instalirati dodatni npm paket pod nazivom 'apollo-server-express.'Ovaj npm paket koristi se za pokretanje graphQL poslužitelja sa svim čvorovima.js HTTP okviri poput 'express.'

[e-pošta zaštićena]: ~ $ npm instalirajte apollo-server-express --save

Definiranje MongoDB sheme

Sada smo postavili svoje okruženje za našu aplikaciju GraphQL u Nodeu.js, a vrijeme je da definiramo shemu za našu aplikaciju. Stvorite datoteku 'models / student.js 'u korijenskom direktoriju projekta.

// definiranje studentske sheme
const mungos = zahtijeva ('mungos');
const studentSchema = novi mungos.Shema(
Ime:
vrsta: Niz,
potrebno: istinito
,
razred:
vrsta: Broj,
potrebno: istinito
,
glavni predmet:
vrsta: Niz,
potrebno: istinito

,
vremenske oznake: true
);
const Student = mungos.model ('Student', studentSchema);
modul.izvoz = Student, studentska shema

U gore definiranoj shemi svaki student mora imati ime, razred i glavni predmet.

Izrada API-ja GraphQL

Nakon stvaranja studentske sheme, sada ćemo izgraditi GraphQL API. Stvorite shemu.js 'za pisanje GraphQL parametara. Postoje dva parametra, "tipovi" i "razrješivači", koji se koriste u GraphQL API-ju. U "vrstama" odredit ćemo našu shemu, upite (npr.g., Izrada GET zahtjeva) i mutacije (npr.g., Izrada zahtjeva za UPDATE ili DELETE) na navedenu shemu. Napisat ćemo različite metode definirane u 'tipovima' kako bismo povezali upite i mutacije s bazom podataka u 'rješivačima'.'

// uvoz sheme i modula
const gql = zahtijeva ('apollo-server-express');
const Student = zahtijeva ('./ modeli / student ').Student;
// Definiranje sheme, upita i vrste mutacije
const typeDefs = gql '
upišite Student
učinio sam!,
naziv: Niz!,
razred: Int!,
uža specijalnost: Gudač!

upišite upit
getStudents: [Student],
getStudentById (id: ID!): Student

type Mutation
addStudent (name: String!, razred: Int!, uža specijalnost: Gudač! ): Student
updateStudent (naziv: Niz!, razred: Int!, uža specijalnost: Gudač! ): Student
deleteStudent (id: ID! ): Student
'
// Definiranje rješavača
rješavači const =
Upit:
getStudents: (roditelj, argumenti) =>
povratak Student.pronaći();
,
getStudentById: (roditelj, argumenti) =>
povratak Student.findById (args.iskaznica);

,
Mutacija:
addStudent: (nadređeni, argumenti) =>
neka student = novi student (
naziv: args.Ime,
razred: args.razred,
uža specijalnost: svađe.majore
);
povratak student.uštedjeti();
,
updateStudent: (roditelj, argumenti) =>
ako(!svađe.id) povratak;
povratak Student.findOneAndUpdate (
_id: args.iskaznica
,

$ set:
naziv: args.Ime,
razred: args.razred,
uža specijalnost: svađe.majore

,
novo: istina, (pogreška, student) =>
if (err)
konzola.zapisnik (pogreška);
ostalo ;
)



modul.izvoz =
typeDefs,
rješavači

Stvaranje GraphQL API poslužitelja

Sada smo gotovo gotovi sa izradom GraphQL aplikacije. Preostaje još samo stvaranje poslužitelja. Stvorite datoteku pod nazivom 'app.js 'za konfiguriranje parametara poslužitelja.

// uvoz potrebnih paketa
const express = require ('express');
const mungos = zahtijeva ('mungos');
const bodyParser = require ('body-parser');
const cors = zahtijeva ('cors');
const ApolloServer = zahtijeva ('apollo-server-express');
// uvoz sheme
const typeDefs, resolvers = zahtijeva ('./shema');
// spajanje na MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / studenti ”;
const spojiti = mungos.povezivanje (url, useNewUrlParser: true);
Spojiti.tada ((db) =>
konzola.log ('Veza uspješna');
, (pogreška) =>
konzola.zapisnik (pogreška);
);
// stvaranje poslužitelja
const poslužitelj = novi ApolloServer (
typeDefs: typeDefs,
rješavači: rješavači
);
const app = express ();
app.koristiti (bodyParser.json ());
app.use ('*', cors ());
poslužitelju.applyMiddleware (app);
app.slušaj (8000, () =>

konzola.zapisnik ('slušanje 8000');
)

Testiranje GraphQL API-ja

Imamo naš GraphQL poslužitelj i radi na portu 8000, a vrijeme je da testiramo GraphQL API. Otvorite web stranicu GraphQL u pregledniku posjetom sljedećem urlu.

http: // localhost: 8000 / graphql

I otvorit će sljedeću web stranicu.


Dodajte učenika u bazu podataka koristeći graphQL API.


Slično tome, dodajte još učenika, a nakon dodavanja učenika uzmite sve studente pomoću GraphQL API-ja.


Zabilježite ID bilo kojeg od učenika i uzmite određenog učenika pomoću njegovog ID-a.

Zaključak

Dohvaćanje podataka iz baze podataka pomoću standardnog REST API-a usporava upit jer ponekad dobivamo više podataka nego što je potrebno. Korištenjem GraphQL-a možemo dohvatiti točno potrebne podatke koji čine GraphQL API bržim. U ovom demonstracijskom projektu imamo samo jednu shemu, pa smo stvorili GraphQL API za tu jednu shemu. Također, definirali smo tri do četiri metode za shemu. Možete stvoriti više upita ili mutacija prema vašoj aplikaciji.

Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...
10 najboljih igara za igranje na Ubuntuu
Windows platforma bila je jedna od dominantnih platformi za igre zbog ogromnog postotka igara koje se danas razvijaju kako bi podržavale Windows. Može...