NodeJS

GraphQL-toepassing implementeren met Node.js op EC2-server

GraphQL-toepassing implementeren met Node.js op EC2-server
GraphQL, ook bekend als Graph Query Language, opgericht en onderhouden door Facebook, is een querytaal die wordt gebruikt voor API's. Het is gebouwd met behulp van de programmeertalen JavaScript, Scala, Java en Ruby. Het basisdoel is om de gegevens van server naar client te vragen.GraphQL aggregeert de gegevens uit verschillende bronnen. Aggregatie is het proces van het filteren van gegevens aan de serverzijde en het vervolgens verzenden van de gefilterde gegevens naar de client. Zonder aggregatie sturen we alle gegevens naar de klant en vervolgens worden de gegevens aan de klantzijde gefilterd. Dit maakt het systeem traag en we kunnen de efficiëntie van een API verbeteren door gebruik te maken van GraphQL. Hier zullen we leren een eenvoudige GraphQL-toepassing te implementeren met behulp van node.js op een EC2-server.

Vereiste pakketten installeren

De eerste stap om uw graphQL-toepassing te implementeren, is om uw server gereed te maken door de vereiste pakketten te installeren. Log in op de server met SSH.

[e-mail beveiligd]:~$ ssh ubuntu@IPAdress -i KeyPair.pem

OPMERKING: zorg ervoor dat de beveiligingsgroep van de instantie is geconfigureerd om verbinding vanaf poort 22 toe te staan ​​en dat het privésleutelbestand 400 machtigingen heeft.

Update Ubuntu-opslagplaatsen.

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

Nu node installeren.js en npm op uw ubuntu-server.

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

Controleer de installatie door de versie van node te controleren.js en npm.

[e-mail beveiligd]:~$ node -v
[e-mail beveiligd]:~$ npm -v

GraphQL-toepassing verplaatsen naar EC2-server

De EC2-instantie is klaar om graphQL-applicaties in node te implementeren.js. Nu zullen we onze code naar de EC2-instantie verplaatsen. Twee veelvoorkomende manieren om de code naar de server te kopiëren worden hieronder vermeld en worden hier besproken.

Toepassing kopiëren met scp-opdracht

Om uw applicatie naar de EC2-server te kopiëren met het scp-commando, verwijder eerst de map 'node_modules' uit uw graphQL-toepassing. Deze map bevat alle npm-pakketten die nodig zijn om de toepassing uit te voeren. We zullen deze pakketten later installeren voordat we de graphQL-toepassing starten. Comprimeer nu de projectdirectory in een zipbestand. Nadat we het zipbestand hebben gemaakt, zullen we het zipbestand van het project naar de server verplaatsen. Linux en Windows hebben verschillende methoden om een ​​zipbestand te maken.

ramen

Klik in Windows met de rechtermuisknop op de hoofdmap van de toepassing en ga naar de optie 'verzenden naar'. Er wordt een submenu geopend. Klik op de 'Gecomprimeerde (gezipte) map' om een ​​zipbestand van de graphQL-applicatie te maken.

Linux of Mac

In Linux of Mac OS gebruiken we de opdracht 'zip' om een ​​zipbestand van het project te maken.

[e-mail beveiligd]:~$ zip -r graphQL.zip grafiekQLQ

De bovenstaande opdracht genereert de graphQL.zip-bestand van de map graphQL.

Applicatie uploaden naar de server

Nu hebben we een zip-bestand van onze applicatie, en we kunnen het zip-bestand uploaden naar de server met de opdracht scpp.

[e-mail beveiligd]:~$ scp -i KeyPair.pem grafiekQL.zip ubuntu@IPAdres:~/

De bovenstaande opdracht verplaatst het zipbestand van het project naar de thuismap van de externe server via de ssh-verbinding. Pak nu op de externe server het zipbestand van het project uit.

[email protected]:~$ unzip graphQL.zip

Applicatie klonen van Github, Bitbucket of Gitlab

De tweede methode om applicatiecode naar de server te kopiëren is het gebruik van git. Installeer git vanaf de opdrachtregel op de EC2-server.

[e-mail beveiligd]:~$ sudo apt install git

Controleer de git-versie om de installatie te verifiëren.

[e-mail beveiligd]:~$ git --version

Als het de versie van git niet geeft, dan is git niet geïnstalleerd. Kloon nu de applicatie vanuit de github, gitlab of bitbucket. Hier zullen we de applicatiecode van de github klonen.

[e-mail beveiligd]:~$ git clone ttps://github.com/contentful/de-voorbeeld-app.nodejs

De GraphQL-toepassing starten

Nu hebben we onze graphQL-applicatie op de externe server. Ga naar de hoofdmap van de graphQL-toepassing en installeer de vereiste npm-pakketten om de graphQL-toepassing uit te voeren.

[e-mail beveiligd]:~$ cd graphQL
[e-mail beveiligd]:~$ sudo npm install

Deze opdracht analyseert het pakket.json-bestand in het project en installeer alle vereiste npm-pakketten. Na het installeren van de vereiste pakketten, zullen we nu de graphQL-toepassing starten.

[e-mail beveiligd]:~$ node-app.js

Toepassing uitvoeren als Daemon

Wanneer we de toepassing uitvoeren met de standaardmethode zoals hierboven beschreven, wordt deze op de voorgrond uitgevoerd en stopt de toepassing wanneer u het terminalvenster sluit. We kunnen de applicatie als een achtergrondproces uitvoeren door het ampersand-teken (&) aan de opdracht toe te voegen.

[e-mail beveiligd]:~$ node-app.js &

Het probleem met deze methode is dat wanneer we onze applicatiecode wijzigen, de toegepaste wijzigingen niet automatisch worden weergegeven. We zullen de applicatie elke keer dat we de code wijzigen opnieuw moeten starten om de wijzigingen toe te passen. Om de applicatie op de achtergrond uit te voeren en wijzigingen automatisch toe te passen, gebruiken we een npm-pakket met de naam pm2. Installeer pm2 op de server.

[e-mail beveiligd]:~$ sudo npm install -g pm2

Start de graphQL-toepassing met pm2.

[e-mail beveiligd]:~$ pm2 start app.js --name “graphQL” --watch

De vlag '-name' geeft het achtergrondproces een naam en we kunnen de toepassing starten en stoppen met de naam. De vlag '-watch' blijft de applicatiecode controleren om wijzigingen onmiddellijk toe te passen. U kunt meer leren over pm2 door de volgende link te bezoeken:

https://pm2.keymetrics.io/

Opvragen van GraphQL API vanuit browser

We kunnen onze graphQL-applicatie configureren om handmatig graphQL-query's vanuit de browser te maken. Hiervoor moeten we een apart HTTP-eindpunt maken waarop we de graphQL API-server zullen mounten. En dit HTTP-eindpunt zal worden gebruikt om handmatige query's uit te voeren. Hieronder volgt de code om het eindpunt van de graphQL api-server te maken:.

const express = vereisen('express');
const graphqlHTTP = vereisen('express-graphql');
const buildSchema = vereisen ('graphql');
const grafiekQLSchema = buildSchema('
typ zoekopdracht
bericht: String
'
);
const func =
bericht: () =>

return 'u gebruikt de graphql api-server';

;
const-server = express();
server.use('/graphql', graphqlHTTP(
schema: graphQLSchema,
rootValue: func,
graphiql: waar
));
server.luister(3000);

Nu, na het uitvoeren van de server, hebben we toegang tot de graphQL api-server op de volgende route:.

http://localhost:3000/graphql

Opvragen van GraphQL API met behulp van CLI

In de vorige sectie hebben we graphQL-query's gemaakt vanuit de browser met behulp van graphiql. Nu gaan we graphQL-query's maken met behulp van de opdrachtregelinterface in ubuntu. Om vanaf de opdrachtregel een HTTP POST-verzoek in te dienen, gebruiken we de curl-module.

[email protected]:~$ curl -X POST -H "Content-Type: application/json" -d '"query": " message "' http://localhost:3000/graphql

Programmatisch opvragen van GraphQL API

Om een ​​graphQL-query programmatisch uit te voeren, gebruiken we de 'node-fetch'-module in node use.js. Open knooppunt.js in de terminal.

[e-mail beveiligd]:~$ node

Maak nu het HTTP POST-verzoek aan de server met behulp van de 'node-fetch'-module.

GraphQL is een efficiënte querytaal en kan de responstijd van een query naar de database verkorten. De standaard API-aanroepen om gegevens uit de database op te halen, brengen veel onbruikbare gegevens met zich mee in de respons, en daarom neemt de responstijd toe, wat de efficiëntie vermindert. De zoekopdracht naar de databases met behulp van GraphQL retourneert alleen de nuttige gegevens en verkort daarom de responstijd. In dit artikel hebben we onze graphQL-toepassing geïmplementeerd op een EC2-instantie.

Handige hulpmiddelen voor Linux-gamers
Als je graag games op Linux speelt, is de kans groot dat je apps en hulpprogramma's zoals Wine, Lutris en OBS Studio hebt gebruikt om de game-ervaring...
HD Remastered Games voor Linux die nog nooit eerder een Linux-release hebben gehad
Veel game-ontwikkelaars en uitgevers komen met HD-remaster van oude games om de levensduur van franchise te verlengen, fans die compatibiliteit met mo...
Hoe AutoKey te gebruiken om Linux-spellen te automatiseren
AutoKey is een hulpprogramma voor desktopautomatisering voor Linux en X11, geprogrammeerd in Python 3, GTK en Qt. Met behulp van de scripting- en MACR...