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.pemOPMERKING: 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 -yNu 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.
- Kopieer code met de opdracht scp
- Applicatiecode klonen van Github, Gitlab of Bitbucket
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 grafiekQLQDe 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.zipApplicatie 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 gitControleer 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.nodejsDe 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.jsToepassing 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 pm2Start de graphQL-toepassing met pm2.
[e-mail beveiligd]:~$ pm2 start app.js --name “graphQL” --watchDe 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]:~$ nodeMaak 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.