Hvordan lage en Node.js RESTful API ved å bruke Express.js på Ubuntu 16.04 LTS

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:

  • /api/numbers - Viser alle tall fra 1-10.

  • /api/letters - Viser alle bokstaver fra AZ.

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.

Avsluttende merknader

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 .


Sett opp Cacti på Debian Jessie

Sett opp Cacti på Debian Jessie

Introduksjon Cacti er et åpen kildekode overvåkings- og grafverktøy som er fullt basert på RRD-data. Gjennom Cacti kan du overvåke nesten alle typer enheter

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Installer Lets Encrypt SSL på ett-klikks WordPress-appen

Introduksjon Lets Encrypt er en sertifikatmyndighetstjeneste som tilbyr gratis TLS/SSL-sertifikater. Installasjonsprosessen forenkles av Certbot,

Sett opp iRedMail på Debian Wheezy

Sett opp iRedMail på Debian Wheezy

Bruker du et annet system? Denne opplæringen viser deg hvordan du installerer gruppevaren iRedMail på en ny installasjon av Debian Wheezy. Du bør bruke en serve

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

Tre gratis serverkontrollpaneler (hurtiginstallasjon)

1. Virtualmin/Webmin Virtualmin er et kraftig og fleksibelt kontrollpanel for webhotell for Linux- og UNIX-systemer basert på den velkjente Open Source-nettbasen

Bruker skjermen på Ubuntu 14.04

Bruker skjermen på Ubuntu 14.04

Skjerm er et program som tillater flere bruk av terminalsesjoner i ett vindu. Dette lar deg simulere flere terminalvinduer der det ma

Bruke Logrotate til å administrere loggfiler

Bruke Logrotate til å administrere loggfiler

Introduksjon Logrotate er et Linux-verktøy som forenkler administrasjonen av loggfiler. Den kjører vanligvis en gang om dagen via en cron-jobb, og administrerer loggbasen

Installere Docker CE på Ubuntu 16.04

Installere Docker CE på Ubuntu 16.04

Bruker du et annet system? Docker er en applikasjon som gjør det mulig å distribuere programmer som kjøres som containere. Det ble skrevet i det populære Go-programmet

Patching the Dirty Cow Exploit på CentOS

Patching the Dirty Cow Exploit på CentOS

Hva er Dirty Cow (CVE-2016-5195)? Dirty Cow-sårbarheten utnyttes gjennom hvordan Linux behandler kode. Det gjør det mulig for en uprivilegert bruker å gai

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Konfigurer en ikke-rootbruker med Sudo Access på Ubuntu

Å ha bare én bruker, som er root, kan være farlig. Så la oss fikse det. Vultr gir oss friheten til å gjøre som vi vil med våre brukere og våre servere

Installer Adminer på Debian/Ubuntu

Installer Adminer på Debian/Ubuntu

Adminer er et lett alternativ til phpMyAdmin. Til sammenligning er dens totale pakkestørrelse 400 KB, mot 4,2 MB med phpMyAdmin. I motsetning til phpMyAdmin, som

Slik installerer du GoAccess på Ubuntu 16.04

Slik installerer du GoAccess på Ubuntu 16.04

Bruker du et annet system? GoAccess er en åpen kildekode-nettlogganalysator. Du kan bruke den til analyse av logger på sanntidsbasis i enten terminalen eller

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Konfigurer Nagios på Ubuntu: Del 1 - Nagios Server

Denne artikkelen er en del av en todelt serie om installasjon og konfigurering av Nagios på Ubuntu 14.04. Del 1: Nagios Server Del 2: Oversikt over ekstern vert Nagio

Sett opp tidssone og NTP på Ubuntu 14.04

Sett opp tidssone og NTP på Ubuntu 14.04

Vultr-servere kan ikke distribueres med tidssonen/datoen/klokkeslettet du trenger på serveren din. Heldigvis kan vi manuelt stille inn tidssonen for å forhindre problemer

Distribuer en Meteor-applikasjon på Ubuntu

Distribuer en Meteor-applikasjon på Ubuntu

Denne artikkelen vil lede deg gjennom distribusjon av Meteor-appen din til en Vultr VPS som kjører Ubuntu 14.04. Det kan også fungere på andre Linux-distribusjoner (forsøk a

Arbeide med Linux-funksjoner

Arbeide med Linux-funksjoner

Introduksjon Linux-funksjoner er spesielle attributter i Linux-kjernen som gir prosesser og binære kjørbare spesifikke rettigheter som er normale

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Høy tilgjengelighet ved bruk av privat nettverk på Ubuntu 16.04 med Keepalived

Noen arkitekturer med høy tilgjengelighet krever en flytende IP-adresse. Denne funksjonaliteten er tilgjengelig på Vultr-plattformen når privat nettverk har bee

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Konfigurer bare SFTP-brukerkontoer på Ubuntu 14

Innledning Enkelte scenarier krever at du oppretter brukere med lese- og skrivetilgang til en enkelt katalog kun via FTP. Denne artikkelen vil vise deg hvordan t

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Slik konfigurerer du Node.js Persistent-applikasjoner på Ubuntu 16.04

Node.js-applikasjoner er populære for deres evne til å skalere. Å kjøre flere samtidige prosesser på flere servere gir lavere ventetid og større oppetid

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Overvåk enhetene dine ved å bruke LibreNMS på Ubuntu 16.04

Bruker du et annet system? LibreNMS er et fullverdig åpen kildekode-nettverksovervåkingssystem. Den bruker SNMP for å hente data fra forskjellige enheter. En variant

Stopp DHCP fra å endre resolv.conf

Stopp DHCP fra å endre resolv.conf

For DHCP-brukere kan det hende du trenger å redigere /etc/resolv.conf for å bruke andre navneservere. Deretter, etter en periode (eller etter en omstart av systemet)

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer