NodeJS

Introduktion til fremstilling af GraphQL API'er og apps i node.js

Introduktion til fremstilling af GraphQL API'er og apps i node.js

Kommunikation og dataoverførsel mellem frontend og backend på enhver applikation sker via API'er (Application Programming Interface). Der er mange forskellige typer API'er, der bruges til at kommunikere mellem front- og back-end-applikationer som RESTful API, SOAP API, GraphQL API osv. GraphQL API er en relativt ny teknologi, og den er meget hurtigere end andre typer API'er til rådighed. At hente data fra databasen ved hjælp af GraphQL api er meget hurtigere end REST API. Mens du bruger GraphQL API, har klienten kontrol til kun at hente de krævede data i stedet for at få alle detaljerne; Derfor fungerer GraphQL API hurtigere end REST API.

Installation af pakker

Vi bygger en knude.js-applikation ved hjælp af GraphQL API, så vi skal installere node.js og npm for dette inden projektet startes.

[e-mail-beskyttet]: ~ $ sudo apt-get update -y
[e-mail-beskyttet]: ~ $ sudo apt-get install nodejs
[e-mail-beskyttet]: ~ $ sudo apt-get install npm

Opsætning af projekt

Vi bruger 'ekspress' rammen fra node.js til at opbygge vores applikation. Opret en mappe med navnet 'graphql' og start projektet.

[e-mail-beskyttet]: ~ $ mkdir graphql
[e-mail-beskyttet]: ~ $ cd graphql /
[e-mail-beskyttet]: ~ $ npm init -y

MongoDB-opsætning

I vores GraphQL-projekt bruger vi MongoDB som vores database. MongoDB er en skemaløs database og gemmer data i form af nøglepar. Følg de givne trin for at installere mongoDB.

Importer den offentlige GPG-nøgle til MongoDB.

[e-mail-beskyttet]: ~ $ wget -qO - https: // www.mongodb.org / statisk / pgp / server-4.4.asc | sudo apt-key tilføj -


Opret listefilen til mongodb.

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

Opdater lokale arkiver.

[e-mail-beskyttet]: ~ $ sudo apt-get update -y

Installer mongodb-pakke.

[e-mail-beskyttet]: ~ $ sudo apt-get install -y mongodb-org

Start og aktiver mongod.service.

[e-mail-beskyttet]: ~ $ sudo systemctl start mongod.service
[e-mailbeskyttet]: ~ $ sudo systemctl aktiver mongod.service

Installation af npm-moduler

Til vores GraphQL-applikation skal vi installere nogle npm-pakker. Vi installerer kors, express, body-parser, mangoose osv.

[e-mail-beskyttet]: ~ $ cd graphql /
[e-mail-beskyttet]: ~ $ npm installer cors express body-parser mangoose - gem

For at oprette en GraphQL-API er vi nødt til at installere en ekstra npm-pakke med navnet 'apollo-server-express.'Denne npm-pakke bruges til at køre graphQL-server med al node.js HTTP-rammer som 'express'.''

[email protected]: ~ $ npm installer apollo-server-express --save

Definition af MongoDB-skema

Nu har vi indstillet vores miljø til vores GraphQL-applikation i Node.js, og det er på tide at definere et skema til vores ansøgning. Opret en fil 'modeller / studerende.js 'i projektets rodmappe.

// definerer elevskema
const mongoose = kræve ('mangoose');
const studentSchema = ny mango.Skema (
navn:
type: streng,
krævet: sandt
,
klasse:
type: Antal,
krævet: sandt
,
større:
type: streng,
krævet: sandt

,
tidsstempler: sandt
);
const Student = Mongoose.model ('Student', studentSchema);
modul.eksport = Student, studentSchema

I det ovenfor definerede skema skal alle studerende have et navn, klasse og hovedfag.

Opbygning af GraphQL API

Efter oprettelse af studentskemaet bygger vi nu GraphQL API. Opret et 'skema.js 'for at skrive GraphQL-parametre. Der er to parametre, 'typer' og 'resolvere', der bruges i GraphQL API. I 'typer' specificerer vi vores skema, forespørgslerne (f.eks.g., At foretage GET-anmodninger) og mutationer (e.g., Foretagelse af UPDATE eller SLET anmodninger) til det angivne skema. Vi skriver de forskellige metoder, der er defineret i 'typer' for at forbinde forespørgsler og mutationer med databasen i 'opløsere.''

// import af skema og modul
const gql = kræve ('apollo-server-express');
const Student = kræve ('./ modeller / studerende ').Studerende;
// Definere skema, forespørgsel og mutationstype
const typeDefs = gql '
skriv studerende
jeg gjorde!,
navn: String!,
klasse: Int!,
major: String!

skriv forespørgsel
getStudents: [Student],
getStudentById (id: ID!): Studerende

type mutation
addStudent (navn: String!, klasse: Int!, major: String! ): Studerende
updateStudent (navn: String!, klasse: Int!, major: String! ): Studerende
deleteStudent (id: ID! ): Studerende
'
// Definering af resolvere
const resolvers =
Forespørgsel:
getStudents: (forælder, args) =>
returner studerende.finde();
,
getStudentById: (forælder, args) =>
returner studerende.findById (arg.id);

,
Mutation:
addStudent: (forælder, args) =>
lad studerende = ny elev (
navn: args.navn,
klasse: args.klasse,
major: args.major
);
tilbagevendende studerende.Gemme();
,
updateStudent: (forælder, args) =>
hvis(!argumenterer.id) returnere;
returner studerende.findOneAndUpdate (
_id: args.id
,

$ sæt:
navn: args.navn,
klasse: args.klasse,
major: args.major

,
new: true, (err, Student) =>
hvis (fejler)
konsol.log (fejler);
andet ;
)



modul.eksport =
typeDefs,
opløsere

Oprettelse af GraphQL API-server

Nu er vi næsten færdige med at oprette GraphQL-applikationen. Det eneste trin tilbage er at oprette serveren. Opret en fil med navnet 'app.js 'for at konfigurere serverparametre.

// import af nødvendige pakker
const express = kræve ('express');
const mongoose = kræve ('mangoose');
const bodyParser = kræve ('body-parser');
const cors = kræve ('cors');
const ApolloServer = kræver ('apollo-server-express');
// importskema
const typeDefs, resolvers = kræver ('./ skema ');
// opretter forbindelse til MongoDB
const url = “mongodb: // 127.0.0.1: 27017 / studerende ”;
const connect = mangoose.forbinde (url, useNewUrlParser: true);
Opret forbindelse.derefter ((db) =>
konsol.log ('Forbindelse lykkedes');
, (err) =>
konsol.log (fejler);
);
// opretter server
const server = ny ApolloServer (
typeDefs: typeDefs,
resolvers: resolvers
);
const app = express ();
app.brug (bodyParser.json ());
app.brug ('*', cors ());
server.ApplyMiddleware (app);
app.lyt (8000, () =>

konsol.log ('lytter til 8000');
)

Test af GraphQL API

Vi har vores grafQL-server kørende på port 8000, og det er på tide at teste GraphQL API. Åbn GraphQL-websiden i browseren ved at besøge følgende url.

http: // localhost: 8000 / graphql

Og det åbner følgende webside.


Føj den studerende til databasen ved hjælp af graphQL API.


Tilsvarende tilføj flere studerende, og efter at have tilføjet den studerende skal du få alle de studerende ved hjælp af GraphQL API.


Bemærk id'et for en af ​​studerende, og få den specifikke studerende ved hjælp af sit id.

Konklusion

At hente data fra databasen ved hjælp af standard REST API gør forespørgslen langsom, da vi nogle gange får flere data end krævet. Ved hjælp af GraphQL kan vi hente nøjagtigt de krævede data, der gør GraphQL API hurtigere. I dette demoprojekt har vi kun et enkelt skema, så vi har oprettet GraphQL API til det samme skema. Vi har også defineret tre til fire metoder til skemaet. Du kan oprette mere end en forespørgsel eller mutationer i henhold til din applikation.

Mus Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
Føj musbevægelser til Windows 10 ved hjælp af disse gratis værktøjer
I de senere år har computere og operativsystemer udviklet sig meget. Der var et tidspunkt, hvor brugerne skulle bruge kommandoer til at navigere genne...
Mus Styr og administrer musebevægelse mellem flere skærme i Windows 10
Styr og administrer musebevægelse mellem flere skærme i Windows 10
Dual Display Mouse Manager lader dig kontrollere og konfigurere musebevægelse mellem flere skærme ved at bremse dens bevægelser nær grænsen. Windows 1...
Mus WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
WinMouse giver dig mulighed for at tilpasse og forbedre musemarkørens bevægelse på Windows-pc
Hvis du vil forbedre standardfunktionerne for din musemarkør, skal du bruge freeware WinMouse. Det tilføjer flere funktioner, der hjælper dig med at f...