KnotenJS

Einführung in die Erstellung von GraphQL-APIs und -Apps in Node.js

Einführung in die Erstellung von GraphQL-APIs und -Apps in Node.js

Die Kommunikation und Datenübertragung zwischen Frontend und Backend einer beliebigen Anwendung erfolgt über APIs (Application Programming Interface). Es gibt viele verschiedene Arten von APIs, die verwendet werden, um zwischen den Front- und Back-End-Anwendungen zu kommunizieren, wie RESTful API, SOAP API, GraphQL API usw. Die GraphQL-API ist eine relativ neue Technologie und viel schneller als andere verfügbare API-Typen. Das Abrufen von Daten aus der Datenbank mit der GraphQL-API ist viel schneller als mit der REST-API. Bei der Verwendung der GraphQL-API hat der Client die Kontrolle, nur die erforderlichen Daten abzurufen, anstatt alle Details abzurufen. Aus diesem Grund arbeitet die GraphQL-API schneller als die REST-API.

Pakete installieren

Wir bauen einen Knoten.js-Anwendung, die die GraphQL-API verwendet, also müssen wir node installieren.js und npm dafür, bevor Sie das Projekt starten.

[email protected]:~$ sudo apt-get update -y
[email protected]:~$ sudo apt-get install nodejs
[email protected]:~$ sudo apt-get install npm

Projekt einrichten

Wir verwenden das 'Express'-Framework von node.js, um unsere Anwendung zu erstellen. Erstellen Sie ein Verzeichnis namens 'graphql' und starten Sie das Projekt.

[email protected]:~$ mkdir graphql
[email protected]:~$ cd graphql/
[email protected]:~$ npm init -y

MongoDB-Einrichtung

In unserem GraphQL-Projekt werden wir MongoDB als Datenbank verwenden. MongoDB ist eine schemalose Datenbank und speichert Daten in Form von Schlüsselpaaren. Um mongoDB zu installieren, befolgen Sie die angegebenen Schritte.

Importieren Sie den öffentlichen GPG-Schlüssel für MongoDB.

[email protected]:~$ wget -qO - https://www.mongodb.org/static/pgp/server-4.4.aufsteigend | sudo apt-key hinzufügen -


Erstellen Sie die Listendatei für mongodb.

[email protected]:~$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 Multiversum" | sudo tee /etc/apt/sources.aufführen.d/mongodb-org-4.4.aufführen

Lokale Repositorys aktualisieren.

[email protected]:~$ sudo apt-get update -y

Mongodb-Paket installieren.

[email protected]:~$ sudo apt-get install -y mongodb-org

Mongod starten und aktivieren.Bedienung.

[email protected]:~$ sudo systemctl start mongod.Bedienung
[email protected]:~$ sudo systemctl enable mongod.Bedienung

Installieren von npm-Modulen

Für unsere GraphQL-Anwendung müssen wir einige npm-Pakete installieren. Wir werden Cors, Express, Body-Parser, Mungo usw. installieren.

[email protected]:~$ cd graphql/
[email protected]:~$ npm install cors express body-parser mungo --save

Um eine GraphQL-API zu erstellen, müssen wir ein zusätzliches npm-Paket namens 'apollo-server-express . installieren.' Dieses npm-Paket wird verwendet, um den graphQL-Server mit allen Node auszuführen.js HTTP-Frameworks wie 'express.'

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

MongoDB-Schema definieren

Jetzt haben wir unsere Umgebung für unsere GraphQL-Anwendung in Node eingerichtet.js, und es ist an der Zeit, ein Schema für unsere Anwendung zu definieren. Erstellen Sie eine Datei 'Modelle/Student.js' im Projekt-Stammverzeichnis.

// Schülerschema definieren
const Mungo = erfordern('Mungo');
const studentSchema = neuer Mungo.Schema(
Name:
Typ: String,
erforderlich: wahr
,
Klasse:
Nummer eingeben,
erforderlich: wahr
,
Haupt:
Typ: String,
erforderlich: wahr

,
Zeitstempel: wahr
);
const Student = Mungo.model('Student', studentSchema);
Modul.exports = Student, studentSchema

Im oben definierten Schema muss jeder Schüler einen Namen, eine Klasse und ein Hauptfach haben.

Erstellen der GraphQL-API

Nachdem wir das Student-Schema erstellt haben, erstellen wir nun die GraphQL-API. Erstellen Sie ein "Schema".js' zum Schreiben von GraphQL-Parametern. Es gibt zwei Parameter, "Typen" und "Resolver", die in der GraphQL-API verwendet werden. In 'Typen' spezifizieren wir unser Schema, die Abfragen (z.G., GET-Anfragen stellen) und Mutationen (z.G., Senden von UPDATE- oder DELETE-Anfragen) an das angegebene Schema. Wir werden die verschiedenen in 'Typen' definierten Methoden schreiben, um die Abfragen und Mutationen mit der Datenbank in 'Resolver' zu verknüpfen.'

// Schema und Modul importieren
const gql = require('apollo-server-express');
const Student = erfordern('./models/student').Schüler;
// Schema, Abfrage und Mutationstyp definieren
const typeDefs = gql '
Typ Student
Ich tat!,
Name: String!,
Klasse: Int!,
Hauptfach: Streicher!

Typ Abfrage
getStudents: [Student],
getStudentById(id: ID!): Schüler

Typ Mutation
addStudent( name: String!, Klasse: Int!, Hauptfach: Streicher! ): Schüler
updateStudent( name: String!, Klasse: Int!, Hauptfach: Streicher! ): Schüler
deleteStudent( id: ID! ): Schüler
'
// Definieren von Resolvern
const-Resolver =
Abfrage:
getStudents: (Elternteil, Argumente) =>
Schüler zurück.finden();
,
getStudentById: (Elternteil, Argumente) =>
Schüler zurück.findById(args.Ich würde);

,
Mutation:
addStudent: (Elternteil, Argumente) =>
let student = new student(
Name: args.Name,
Klasse: Argumente.Klasse,
Hauptfach: Argumente.Haupt
);
Schüler zurück.speichern();
,
updateStudent: (Elternteil, Argumente) =>
wenn(!args.id) Rückkehr;
Schüler zurück.findOneAndUpdate(
_id: args.Ich würde
,

$set:
Name: args.Name,
Klasse: Argumente.Klasse,
Hauptfach: Argumente.Haupt

,
new: true , (err, Student) =>
wenn(err)
Konsole.log(err);
sonst ;
)



Modul.Exporte =
TypDefs,
Resolver

Erstellen eines GraphQL-API-Servers

Jetzt sind wir fast fertig mit der Erstellung der GraphQL-Anwendung. Der einzige Schritt, der übrig bleibt, ist den Server zu erstellen. Erstellen Sie eine Datei namens 'app.js', um Serverparameter zu konfigurieren.

// erforderliche Pakete importieren
const express = require('express');
const Mungo = erfordern('Mungo');
const bodyParser = require('body-parser');
const cors = require('cors');
const ApolloServer = require('apollo-server-express');
// Schema importieren
const typeDefs, Resolver = require('./Schema');
// Verbindung zu MongoDB
const-URL = “mongodb://127.0.0.1:27017/Studenten“;
const connect = Mungo.connect(url, useNewUrlParser: true );
verbinden.dann((db) =>
Konsole.log('Verbindung erfolgreich');
, (irrt) =>
Konsole.log(err);
);
// Server erstellen
const server = neuer ApolloServer(
typeDefs: typeDefs,
Resolver: Resolver
);
const app = express();
App.verwenden (bodyParser.json());
App.use('*', cors());
Server.ApplyMiddleware( app );
App.zuhören( 8000, () =>

Konsole.log('auf 8000 hören');
)

Testen der GraphQL-API

Wir haben unseren graphQL-Server auf Port 8000 in Betrieb und es ist an der Zeit, die GraphQL-API zu testen. Öffnen Sie die GraphQL-Webseite im Browser, indem Sie die folgende URL aufrufen.

http://localhost:8000/graphql

Und es öffnet sich die folgende Webseite.


Fügen Sie den Schüler mithilfe der graphQL-API zur Datenbank hinzu.


Fügen Sie auf ähnliche Weise weitere Schüler hinzu, und nachdem Sie den Schüler hinzugefügt haben, erhalten Sie alle Schüler mit der GraphQL-API.


Notieren Sie sich die ID eines der Schüler und rufen Sie den jeweiligen Schüler mit seiner ID ab.

Fazit

Das Abrufen von Daten aus der Datenbank mithilfe der Standard-REST-API verlangsamt die Abfrage, da wir manchmal mehr Daten als erforderlich erhalten. Mit GraphQL können wir genau die erforderlichen Daten abrufen, die die GraphQL-API schneller machen. In diesem Demoprojekt haben wir nur ein einziges Schema, daher haben wir die GraphQL-API für dieses einzelne Schema erstellt. Außerdem haben wir drei bis vier Methoden für das Schema definiert. Sie können je nach Anwendung mehr als eine Abfrage oder Mutation erstellen.

Cursor springt oder bewegt sich zufällig während der Eingabe in Windows 10
Wenn Sie feststellen, dass Ihr Mauszeiger während der Eingabe auf einem Windows-Laptop oder -Computer automatisch und zufällig springt oder sich von s...
So kehren Sie die Scrollrichtung von Maus und Touchpads in Windows 10 um
Maus und Touchpads machen das Rechnen nicht nur einfach, sondern auch effizienter und weniger zeitaufwendig. Wir können uns ein Leben ohne diese Gerät...
So ändern Sie Mauszeiger- und Cursorgröße, Farbe und Schema unter Windows 10
Der Mauszeiger und der Cursor in Windows 10 sind sehr wichtige Aspekte des Betriebssystems. Dies kann auch für andere Betriebssysteme gesagt werden, a...