Installerer Postman
Installerer Node.js
Initialiserer Node.js-prosjektet vårt
Sette opp Express.js
Starter hovedfilen vår
Tester vårt API med Postman
API-ruter
Introduksjon til NGINX
Sette opp NGINX
Kjør først med NGINX
Holder vårt API i gang
Administrere applikasjonen vår med PM2
Avsluttende merknader
I denne opplæringen lærer du hvordan du setter opp et komplett RESTful API, som vil betjene HTTP-forespørsler ved å bruke Node.js og Express mens du gir det omvendt proxy med NGINX, på Ubuntu 16.04 LTS. Vi vil bruke en applikasjon som heter Postman, et veldig kjent API-utviklingsverktøy, for å teste API-et vårt og sørge for at det er fullt funksjonelt og fungerer som det skal. Node.js er et raskt JavaScript-rammeverk på tvers av plattformer basert på Chromes V8-motor. Den brukes i både skrivebords- og serverapplikasjoner og er kjent for sin entrådede hendelsesløkkehåndtering. Vi kommer til å bruke Node.js som backend for RESTful API, sammen med Express.js, vårt nettapplikasjonsrammeverk bygget for Node.js. Express.js er utgitt som gratis og åpen programvare. Express er server-side, skrevet i JavaScript, og er designet for å bygge APIer, noe som gjør det perfekt for prosjektet vårt. På den annen side er Postman en veldig kraftig HTTP-klient, med API-utvikling i tankene. Den inneholder alle verktøyene du kan ønske deg for API-utvikling.
Installerer Postman
Først vil du gå over til Postmans nettsted og laste ned og installere Postman for hoved-PCen din (ikke serveren din). Alle installasjonsinstruksjoner vil være på nettsiden deres.
Installerer Node.js
For å begynne, må vi først installere Node.js slik at vi kan begynne å utvikle API-en vår. Vi vil laste ned og installere Node.js fra den offisielle nettsiden.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
I tillegg vil du også ønske å ta tak i de nødvendige byggeverktøyene, som vil være nyttige for å kompilere moduler.
sudo apt-get install build-essential
For denne opplæringen vil vi bruke LTS-versjonen av Node.js, som er versjon 8.9.3.
Initialiserer Node.js-prosjektet vårt
Vi må initialisere et nytt Node.js-prosjekt, som vil inneholde en applikasjon. For å gjøre det, opprette en ny katalog.
mkdir expressapi
Bytt til den nye katalogen. Når du er inne, kjør npm initog fullfør alle nødvendige instruksjoner. Vær oppmerksom på "inngangspunktet" for søknaden din: du vil lage denne filen senere. Når du er ferdig, vil du se en package.jsonfil i din nåværende katalog. Den fungerer som en beskrivelse av prosjektet vårt, og viser alle avhengighetene som trengs for å fungere.
Sette opp Express.js
Nå skal vi konfigurere Express.js og dets avhengigheter.
npm install express
Installasjonsprosessen vil begynne. Det vil ta noen minutter før alt er lastet ned.
Starter hovedfilen vår
Deretter vil vi lage vår hovedstartfil for API-en vår. Her skal du bruke "inngangspunktet" du så i package.jsonfilen. Av hensyn til denne opplæringen vil jeg bruke standard navneskjema, index.js.
touch index.js
Deretter åpner du den i nanotekstredigereren.
nano index.js
I hovedfilen vår ønsker vi først å ringe alle våre hovedpakker og registrere våre ruter.
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;
const router = express.Router();
router.get('/', function(req, res) {
res.json({ message: 'API is Online!' });
});
app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);
Det vi gjør her er å initialisere appen vår og sette opp en grunnleggende ruter for API-en vår. Merk at vi setter applikasjonens port til 8080. Vi trenger dette nummeret når vi konfigurerer RESTful API. Nå er vi klare til å gå videre og teste API-en vår.
Tester vårt API med Postman
Kjør følgende i prosjektkatalogen.
node <filename>.js
Dette vil starte APIen, hvor <filename>er startfilen du spesifiserte i package.jsonfilen. Åpne deretter Postman på din PC/Mac, og klikk på " New"-knappen øverst i høyre hjørne, og klikk deretter på " Request". Når du er der, bør du se en stolpe som sier " GET" ved siden av den. Her vil vi legge inn vår forespørsels-URL. Bare skriv inn følgende i forespørsels-URL-delen og klikk på " Send".
`http://your-server-ip:3000/api`
Du vil se " 'API is online'".
API-ruter
For å håndtere ruter vil vi bruke Express-ruteren. Hvis du ikke vet hva en ruter er, er det i hovedsak hvordan applikasjonsendepunkter reagerer på klientforespørsler. Her er rutene vi skal sette opp som eksempel:
Nå skal vi sette opp vår første rutemellomvarestruktur, som så.
router.use(function(req, res, next) {
console.log('We've got something.');
next() //calls next middleware in the application.
});
router.route('/numbers/:number').get((req, res) => {
res.json({result: req.params.number + 1})
});
I dette eksemplet setter vi opp en situasjon der en bruker kan be om summen av et tall + 1 ved å oppgi ordformen til det, ved å bruke GET-metoden. Vi bruker router.route()funksjonen til å peke på hvilket nummer vi ønsker å sende tilbake som resultat. Parametre er navngitt med en " :" foran dem. Vi får tilgang til disse parameterne via req.params.
Her er et eksempel med bokstaver.
router.route('/letters/:letter').get((req, res) => {
res.json({result: req.params.letter.toUpperCase()})
});
Vi bruker samme metode som ovenfor, men vi sender tilbake brevet med stor forbokstav.
Introduksjon til NGINX
NGINX er en velkjent åpen kildekode-programvare som brukes til webservering, omvendte proxyer, streaming og mer. Vi vil bruke NGINX for å reversere proxy-serveren vår for å la oss kjøre den på port 80, fordi Node.js ikke tillater tilkoblinger på porter mindre enn 1024 uten root-tilgang. Dette kan være nyttig når du kobler domenet til serveren din.
Sette opp NGINX
For å begynne å installere NGINX må du kjøre følgende i terminalen din og vente til installasjonen er fullført.
sudo apt-get install nginx
Deretter vil vi lage nettstedsfilen vår som NGINX vil bruke til å reversere proxy-serveren vår.
sudo nano /etc/nginx/sites-available-api.js
Fyll filen med følgende, og deretter CTRL+ for Oå lagre den.
server {
listen 80;
location / {
proxy_set_header X-Real-IP
$remote_addr;
proxy_set_header
X-Forwarded-For
$proxy_add_x_forwarded_for;
proxy_set_header Host
$http_host;
proxy_set_header
X-NginX-Proxy true; proxy_pass
http://127.0.0.1:8080/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade
$http_upgrade;
proxy_set_header Connection
"upgrade";
proxy_redirect off;
proxy_set_header
X-Forwarded-Proto $scheme;
}
}
Ved å bruke den samme porten som vi kjørte applikasjonen vår på tidligere, ber vi Nginx om å omdirigere alle forespørsler fra IP-adressen vår på porten 80til API-en vår som kjører på port 8080.
Deretter aktiverer du omvendt proxy ved å symlinke vår nyopprettede fil til sites-availablemappen:
sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available
Dette vil sikre at NGINX vil reversere proxy vår API.
Kjør først med NGINX
Når vi har fullført NGINX-konfigurasjonen, starter vi NGINX, og starter deretter API-en vår. Start først NGINX på nytt.
sudo systemctl restart nginx
Bytt deretter tilbake til API-katalogen og start den.
node <filename>.js
Applikasjonen vil kjøre på port 80. Bare kjør testen ovenfra med Postman, for å sikre at alt fungerer som det skal.
Holder vårt API i gang
I et produksjonsmiljø vil du sørge for at du har en prosessleder for Node-applikasjonene dine, for å sikre at de forblir i gang for alltid i bakgrunnen. I denne opplæringen vil vi bruke en prosessbehandler kalt PM2 (Process Manager 2), som er en prosessbehandler for Node.js-applikasjoner som vil holde dem i live for alltid med minimal nedetid. PM2 kommer med mange nyttige administrasjonsverktøy, som å stoppe, laste på nytt, sette på pause og mer. For å installere PM2, skriv inn følgende og vent til den installeres.
sudo npm install pm2 -g
Når den er installert, er alt du trenger å gjøre å sørge for at du er i prosjektkatalogen, skriv inn følgende, og applikasjonen vil starte.
pm2 start <filename>.js
Administrere applikasjonen vår med PM2
Som nevnt tidligere har PM2 noen nyttige verktøy som du kan bruke for å bedre administrere applikasjonen din.
pm2 stop- Som navnet antyder, lar dette deg stoppe programmet som kjører for øyeblikket, og drepe prosessen. Hvis applikasjonen din gir et uventet resultat, vil det være nyttig å stoppe den.
pm2 list- Listefunksjonen lar deg se alle applikasjonene som kjører for øyeblikket via PM2, kartlagt etter navnene deres. Hvis du raskt trenger å sjekke programmets oppetid, bør du bruke dette verktøyet.
pm2 restart- Hvis applikasjonen din fryser av en eller annen grunn, og du ønsker å laste den på nytt, gjør pm2 restart nettopp det. Det vil drepe søknadsprosessen og starte den på nytt under en annen prosess.
pm2 monit- PM2s innebygde monitorverktøy lar deg se en graf over applikasjonens spesifikke detaljer, for eksempel CPU/RAM-bruk, i en brukervennlig graf i ncurses-stil. Dette er nyttig hvis du vil ha et visuelt bilde av applikasjonens belastning.
Vi har nå fullført oppgaven vår med å lage en RESTful API, ved å bruke Node.js, Express, og omvendt proxying med NGINX. Utvid gjerne denne opplæringen. Du kan gjøre mange flotte ting med din nye API, for eksempel legge til autentiseringsmetoder, en database, bedre rute- og feilhåndtering og mye, mye mer. Hvis du har et domene, med en "A"-oppføring allerede satt opp til IP-adressen din, vil du kunne få tilgang til APIen din fra domenet ditt. Hvis du vil lære mer om Express.js, kan du besøke nettstedet deres på http://expressjs.com . For å lære mer om NGINX og omvendt proxying, besøk http://nginx.com . For å lese mer om PM2, besøk siden deres på http://pm2.keymetrics.io .