Hur man skapar ett Node.js RESTful API med Express.js på Ubuntu 16.04 LTS

I den här självstudien kommer du att lära dig hur du ställer in ett komplett RESTful API, som kommer att betjäna HTTP-förfrågningar med Node.js och Express medan du använder omvänd proxy med NGINX, på Ubuntu 16.04 LTS. Vi kommer att använda en applikation som heter Postman, ett mycket välkänt API-utvecklingsverktyg, för att testa vårt API och se till att det är fullt fungerande och fungerar korrekt. Node.js är ett snabbt JavaScript-ramverk för flera plattformar baserat på Chromes V8-motor. Den används i både skrivbords- och serverapplikationer och är känd för sin entrådade hantering av händelseslingor. Vi kommer att använda Node.js som backend för vårt RESTful API, tillsammans med Express.js, vårt ramverk för webbapplikationer byggt för Node.js. Express.js släpps som gratis och öppen programvara. Express är server-side, skriven i JavaScript, och är designad för att bygga API:er, vilket gör det perfekt för vårt projekt. Å andra sidan är Postman en mycket kraftfull HTTP-klient, med API-utveckling i åtanke. Den innehåller alla verktyg du kan tänkas vilja ha för API-utveckling.

Installerar Postman

Först vill du gå över till Postmans webbplats och ladda ner och installera Postman för din huvuddator (inte din server). Alla installationsinstruktioner kommer att finnas på deras hemsida.

Installerar Node.js

För att börja måste vi först installera Node.js så att vi kan börja utveckla vårt API. Vi kommer att ladda ner och installera Node.js från den officiella webbplatsen.

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

Dessutom kommer du också att vilja ta tag i de nödvändiga byggverktygen, som kommer att vara till hjälp vid kompilering av moduler.

sudo apt-get install build-essential

För den här handledningen kommer vi att använda LTS-versionen av Node.js, som är version 8.9.3.

Initierar vårt Node.js-projekt

Vi kommer att behöva initiera ett nytt Node.js-projekt, som kommer att innehålla en applikation. För att göra det, skapa en ny katalog.

 mkdir expressapi 

Byt till den nya katalogen. Väl inne, kör npm initoch slutför alla nödvändiga uppmaningar. Notera "ingångspunkten" för din ansökan: du kommer att skapa den här filen senare. När du är klar kommer du att se en package.jsonfil i din nuvarande katalog. Den fungerar som en beskrivning av vårt projekt och listar alla beroenden som behövs för att fungera.

Konfigurera Express.js

Nu kommer vi att konfigurera Express.js och dess beroenden.

npm install express

Installationsprocessen börjar. Det tar några minuter för allt att laddas ner.

Startar vår huvudfil

Därefter kommer vi att skapa vår huvudsakliga startfil för vårt API. Här kommer du att använda "ingångspunkten" som du såg i package.jsonfilen. För den här handledningens skull kommer jag att använda standardnamnschemat, index.js.

touch index.js

Öppna den sedan i nanotextredigeraren.

nano index.js

I vår huvudfil vill vi först anropa alla våra huvudpaket och registrera våra rutter.

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);

Vad vi gör här är att initialisera vår app och ställa in en grundläggande router för vårt API. Observera att vi ställer in vår applikations port till 8080. Vi kommer att behöva detta nummer när vi konfigurerar vårt RESTful API. Nu är vi redo att gå vidare och testa vårt API.

Testar vårt API med Postman

Kör följande i projektkatalogen.

node <filename>.js

Detta kommer att starta API, där <filename>är startfilen du angav i package.jsonfilen. Öppna sedan Postman på din PC/Mac och klicka på Newknappen " " i det övre högra hörnet och klicka sedan på " Request". När du är där bör du se en stapel som säger " GET" bredvid den. Här kommer vi att ange vår webbadress för begäran. Skriv bara in följande i avsnittet URL för begäran och klicka på " Send".

`http://your-server-ip:3000/api` 

Du kommer att se " 'API is online'".

API-rutter

För att hantera rutter kommer vi att använda Express-routern. Om du inte vet vad en router är, är det i huvudsak hur applikationsändpunkter svarar på klientförfrågningar. Här är de rutter vi kommer att sätta upp som exempel:

  • /api/numbers - Visar alla nummer från 1-10.

  • /api/letters - Visar alla bokstäver från A-Ö.

Nu kommer vi att sätta upp vår första rutt-mellanprogramstruktur, 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 det här exemplet ställer vi upp en situation där en användare kan begära summan av ett tal + 1 genom att ange ordformen för det, med hjälp av GET-metoden. Vi använder router.route()funktionen för att peka på vilket nummer vi vill skicka tillbaka som ett resultat. Parametrar namnges med ett " :" framför dem. Vi kommer åt dessa parametrar via req.params.

Här är ett exempel med bokstäver.

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

Vi använder samma metod som ovan, men vi skickar tillbaka brevet med versaler.

Introduktion till NGINX

NGINX är en välkänd programvara med öppen källkod som används för webbservering, omvända proxyservrar, streaming och mer. Vi kommer att använda NGINX för att omvända proxy för vårt API, för att tillåta oss att köra det på port 80, eftersom Node.js inte tillåter anslutningar på portar mindre än 1024 utan root-åtkomst. Detta kan vara praktiskt när du länkar din domän till din server.

Konfigurera NGINX

För att börja installera NGINX måste du köra följande i din terminal och vänta på att installationen är klar.

sudo apt-get install nginx

Därefter vill vi skapa vår webbplatsfil som NGINX kommer att använda för att vända proxy vår app.

sudo nano /etc/nginx/sites-available-api.js

Fyll filen med följande, sedan CTRL+ för Oatt spara 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;
       }
}

Genom att använda samma port som vi körde vår applikation på tidigare, säger vi till Nginx att omdirigera alla förfrågningar från vår IP-adress på port 80till vårt API som körs på port 8080.

Aktivera sedan omvänd proxy genom att symlinka vår nyskapade fil till sites-availablemappen:

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

Detta kommer att säkerställa att NGINX kommer att omvända proxy vår API.

Kör först med NGINX

När vi har avslutat vår NGINX-konfiguration kommer vi att starta NGINX och sedan starta vårt API. Starta först om NGINX.

sudo systemctl restart nginx

Byt sedan tillbaka till din API-katalog och starta den.

node <filename>.js

Applikationen kommer att köras på port 80. Kör helt enkelt testet ovanifrån med Postman för att säkerställa att allt fungerar korrekt.

Håller vårt API igång

I en produktionsmiljö vill du se till att du har en processhanterare för dina Node-applikationer, för att säkerställa att de körs för alltid i bakgrunden. I den här handledningen kommer vi att använda en processhanterare som heter PM2 (Process Manager 2), som är en processhanterare för Node.js-applikationer som kommer att hålla dem vid liv för alltid med minimal stilleståndstid. PM2 kommer med många användbara hanteringsverktyg, som att stoppa, ladda om, pausa och mer. För att installera PM2, skriv följande och vänta på att den ska installeras.

sudo npm install pm2 -g

När det väl är installerat är allt du behöver göra att se till att du är i projektkatalogen, skriv följande, så startas programmet.

pm2 start <filename>.js

Hantera vår applikation med PM2

Som nämnts tidigare har PM2 några användbara verktyg som du kan använda för att bättre hantera din applikation.

  • pm2 stop- Som namnet antyder låter detta dig stoppa den applikation som körs för närvarande och avbryta dess process. Om din applikation ger ett oväntat resultat kommer det att vara praktiskt att stoppa den.

  • pm2 list- Listfunktionen låter dig se alla applikationer som körs för närvarande via PM2, mappade med deras namn. Om du snabbt behöver kontrollera din applikations drifttid bör du använda det här verktyget.

  • pm2 restart- Om din applikation fryser av någon anledning och du vill ladda om den, gör pm2 restart just det. Det kommer att döda ansökningsprocessen och starta den igen under en annan process.

  • pm2 monit- PM2:s inbyggda monitorverktyg låter dig se en graf över din applikations specifika detaljer, såsom CPU/RAM-användning, i en användarvänlig graf i ncurses-stil. Detta är användbart om du vill ha en visuell bild av din applikations belastning.

Slutliga kommentarer

Vi har nu slutfört vår uppgift att skapa ett RESTful API, använda Node.js, Express och omvänd proxyservering med NGINX. Utvidga gärna denna handledning. Du kan göra många fantastiska saker med ditt nya API, som att lägga till autentiseringsmetoder, en databas, bättre väg- och felhantering och mycket, mycket mer. Om du har en domän, med en "A"-post redan inställd på din IP-adress, kommer du att kunna komma åt ditt API från din domän. Om du vill lära dig mer om Express.js, besök deras webbplats på http://expressjs.com . För att lära dig mer om NGINX och omvänd proxy, besök http://nginx.com . För att läsa mer om PM2, besök deras sida på http://pm2.keymetrics.io .


Installera Plesk på CentOS 7

Installera Plesk på CentOS 7

Använder du ett annat system? Plesk är en egen kontrollpanel för webbhotell som tillåter användare att administrera sina personliga och/eller klienters webbplatser, databaser

Installera Cacti på Debian Jessie

Installera Cacti på Debian Jessie

Introduktion Cacti är ett övervaknings- och grafverktyg med öppen källkod som är helt baserat på RRD-data. Genom Cacti kan du övervaka nästan vilken typ av enhet som helst

Installera Lets Encrypt SSL på One-Click WordPress-appen

Installera Lets Encrypt SSL på One-Click WordPress-appen

Introduktion Lets Encrypt är en certifikatmyndighetstjänst som erbjuder gratis TLS/SSL-certifikat. Installationsprocessen förenklas av Certbot,

Hur man ställer in en Tekkit Classic-server på Ubuntu 16.10

Hur man ställer in en Tekkit Classic-server på Ubuntu 16.10

Använder du ett annat system? Vad är Tekkit Classic? Tekkit Classic är ett modpack för spelet som alla känner och älskar; Minecraft. Den innehåller några av ver

Konfigurera iRedMail på Debian Wheezy

Konfigurera iRedMail på Debian Wheezy

Använder du ett annat system? Den här handledningen visar dig hur du installerar groupware iRedMail på en ny installation av Debian Wheezy. Du bör använda en serve

Hur man installerar och konfigurerar PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

Hur man installerar och konfigurerar PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

PHP och relaterade paket är de mest använda komponenterna när du distribuerar en webbserver. I den här artikeln kommer vi att lära oss hur du ställer in PHP 7.0 eller PHP 7.1 o

Hur man installerar Squid Proxy på CentOS

Hur man installerar Squid Proxy på CentOS

Squid är ett populärt, gratis Linux-program som låter dig skapa en webbproxy för vidarebefordran. I den här guiden ser du hur du installerar Squid på CentOS för att förvandla dig

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Hur man installerar Lighttpd (LLMP Stack) på CentOS 6

Inledning Lighttpd är en apachegaffel som syftar till att vara mycket mindre resurskrävande. Den är lätt, därav namnet, och är ganska enkel att använda. Installera

Tre gratis serverkontrollpaneler (snabbinstallation)

Tre gratis serverkontrollpaneler (snabbinstallation)

1. Virtualmin/Webmin Virtualmin är en kraftfull och flexibel kontrollpanel för webbhotell för Linux- och UNIX-system baserad på den välkända Open Source-webbasen

Konfigurera en Yii-applikation på Ubuntu 14.04

Konfigurera en Yii-applikation på Ubuntu 14.04

Yii är ett PHP-ramverk som låter dig utveckla applikationer snabbare och enklare. Att installera Yii på Ubuntu är enkelt, eftersom du kommer att lära dig exakt

Använder skärmen på Ubuntu 14.04

Använder skärmen på Ubuntu 14.04

Screen är ett program som tillåter flera terminalsessioner inom ett fönster. Detta låter dig simulera flera terminalfönster där det ma

Konfigurera din egen DNS-server på Debian/Ubuntu

Konfigurera din egen DNS-server på Debian/Ubuntu

Denna handledning förklarar hur man ställer in en DNS-server med Bind9 på Debian eller Ubuntu. Genomgående i artikeln, byt ut ditt-domännamn.com i enlighet med detta. Vid th

Använda Logrotate för att hantera loggfiler

Använda Logrotate för att hantera loggfiler

Inledning Logrotate är ett Linux-verktyg som förenklar administrationen av loggfiler. Den körs vanligtvis en gång om dagen via ett cron-jobb och hanterar loggbasen

Konfigurera statiskt nätverk och IPv6 på CentOS 7

Konfigurera statiskt nätverk och IPv6 på CentOS 7

VULTR har nyligen gjort ändringar på deras sida, och allt borde nu fungera bra direkt när NetworkManager är aktiverat. Om du vill inaktivera

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Ändra Icinga2 för att använda Master/Client Model på CentOS 6 eller CentOS 7

Icinga2 är ett kraftfullt övervakningssystem, och när det används i en master-klient-modell kan det ersätta behovet av NRPE-baserade övervakningskontroller. Master-klienten

Konfigurera Red5 Media Server på Ubuntu 16.04

Konfigurera Red5 Media Server på Ubuntu 16.04

Använder du ett annat system? Red5 är en mediaserver med öppen källkod implementerad i Java som låter dig köra Flash fleranvändarapplikationer som livestreamin

Kompilera och installera Nginx med PageSpeed-modulen på Debian 8

Kompilera och installera Nginx med PageSpeed-modulen på Debian 8

I den här artikeln kommer vi att se hur man kompilerar och installerar Nginx mainline från de officiella källorna för Nginx med PageSpeed-modulen, som låter dig t

Hur man installerar Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Hur man installerar Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Hur man installerar Apache Cassandra 3.11.x på CentOS 7

Använder du ett annat system? Apache Cassandra är ett gratis NoSQL-databashanteringssystem med öppen källkod som är designat för att ge skalbarhet, hög

Hur man installerar Vanilla Forum på Ubuntu 16.04

Hur man installerar Vanilla Forum på Ubuntu 16.04

Använder du ett annat system? Vanilla forum är en open source forumapplikation skriven i PHP. Det är en helt anpassningsbar, enkel att använda och stöder externa

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer