Sådan opretter du en Node.js RESTful API ved hjælp af Express.js på Ubuntu 16.04 LTS

I denne vejledning lærer du, hvordan du opsætter en komplet RESTful API, som vil betjene HTTP-anmodninger ved hjælp af Node.js og Express, mens du omvendt proxyerer den med NGINX, på Ubuntu 16.04 LTS. Vi vil bruge en applikation kaldet Postmand, et meget velkendt API-udviklingsværktøj, til at teste vores API og sikre, at det er fuldt funktionelt og fungerer korrekt. Node.js er en hurtig JavaScript-ramme på tværs af platforme baseret på Chromes V8-motor. Den bruges i både desktop- og serverapplikationer og er berømt for sin enkelttrådede hændelsesløkkehåndtering. Vi vil bruge Node.js som backend til vores RESTful API, bundtet med Express.js, vores webapplikationsramme bygget til Node.js. Express.js udgives som gratis og åben software. Express er server-side, skrevet i JavaScript, og er designet til at bygge API'er, hvilket gør det perfekt til vores projekt. På den anden side er Postman en meget kraftfuld HTTP-klient med API-udvikling i tankerne. Den indeholder alle de værktøjer, du kunne ønske dig til API-udvikling.

Installation af Postman

Først vil du gå over til Postmans hjemmeside og downloade og installere Postman til din primære pc (ikke din server). Alle installationsvejledninger vil være på deres hjemmeside.

Installerer Node.js

For at begynde skal vi først installere Node.js, så vi kan begynde at udvikle vores API. Vi vil downloade og installere Node.js fra den officielle hjemmeside.

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

Derudover vil du også gerne have fat i de nødvendige byggeværktøjer, som vil være nyttige ved kompilering af moduler.

sudo apt-get install build-essential

Til denne tutorial vil vi bruge LTS-versionen af ​​Node.js, som er version 8.9.3.

Initialiserer vores Node.js-projekt

Vi bliver nødt til at initialisere et nyt Node.js-projekt, som vil indeholde en applikation. For at gøre det skal du oprette en ny mappe.

 mkdir expressapi 

Skift til den nye mappe. Når du er inde, skal du køre npm initog udfylde alle de nødvendige prompter. Vær opmærksom på "indgangspunktet" for din ansøgning: du vil oprette denne fil senere. Når du er færdig, vil du se en package.jsonfil i din nuværende mappe. Det fungerer som en beskrivelse af vores projekt og viser alle de afhængigheder, der er nødvendige for at fungere.

Opsætning af Express.js

Nu vil vi konfigurere Express.js og dets afhængigheder.

npm install express

Installationsprocessen begynder. Det vil tage et par minutter, før alt er downloadet.

Starter vores hovedfil

Dernæst vil vi oprette vores primære startfil til vores API. Her vil du bruge "indgangspunktet", du så i package.jsonfilen. Af hensyn til denne tutorial vil jeg bruge standardnavneskemaet, index.js.

touch index.js

Åbn den derefter i nano-teksteditoren.

nano index.js

I vores hovedfil vil vi først ringe til alle vores hovedpakker og registrere vores 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);

Grundlæggende er det, vi gør her, at initialisere vores app og opsætte en grundlæggende router til vores API. Bemærk, at vi indstiller vores applikations port til 8080. Vi skal bruge dette nummer, når vi konfigurerer vores RESTful API. Nu er vi klar til at gå videre og teste vores API.

Test af vores API med Postman

Kør følgende i projektbiblioteket.

node <filename>.js

Dette vil starte API'en, hvor <filename>er startfilen, du har angivet i package.jsonfilen. Åbn derefter Postman på din pc/Mac, og klik på knappen " New" i øverste højre hjørne, og klik derefter på " Request". Når du er der, bør du se en bjælke, der siger " GET" ud for den. Her indtaster vi vores anmodnings-URL. Indtast blot følgende i sektionen for anmodnings-URL og klik på " Send".

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

Du vil se " 'API is online'".

API-ruter

Til at håndtere ruter vil vi bruge Express-routeren. Hvis du ikke ved, hvad en router er, er det i bund og grund, hvordan applikationsendepunkter reagerer på klientanmodninger. Her er de ruter, vi vil opsætte som et eksempel:

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

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

Nu vil vi opsætte vores første rute-middleware-struktur, som sådan.

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 eksempel opretter vi en situation, hvor en bruger kan anmode om summen af ​​et tal + 1 ved at angive ordformen af ​​det ved hjælp af GET-metoden. Vi bruger router.route()funktionen til at pege på hvilket nummer vi vil sende tilbage som følge heraf. Parametre er navngivet med et " :" foran dem. Vi tilgår disse parametre via req.params.

Her er et eksempel med bogstaver.

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

Vi bruger samme metode som ovenfor, men vi sender brevet tilbage med stort.

Introduktion til NGINX

NGINX er en velkendt open source-software, der bruges til webservering, omvendte proxyer, streaming og mere. Vi vil bruge NGINX til at reversere proxy vores API, for at tillade os at køre det på port 80, fordi Node.js ikke tillader forbindelser på porte mindre end 1024 uden root-adgang. Dette kan være nyttigt, når du linker dit domæne til din server.

Opsætning af NGINX

For at begynde at installere NGINX skal du køre følgende i din terminal og vente på, at installationen er fuldført.

sudo apt-get install nginx

Dernæst vil vi oprette vores webstedsfil, som NGINX vil bruge til at vende proxy vores app.

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

Udfyld filen med følgende, og derefter CTRL+ for Oat gemme 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 at bruge den samme port, som vi kørte vores applikation på tidligere, beder vi Nginx om at omdirigere alle anmodninger fra vores IP-adresse på port 80til vores API, der kører på port 8080.

Aktiver derefter den omvendte proxy ved at symlinke vores nyoprettede fil til sites-availablemappen:

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

Dette vil sikre, at NGINX vil reversere proxy vores API.

Kør først med NGINX

Når vi har afsluttet vores NGINX-konfiguration, starter vi NGINX og starter derefter vores API. Genstart først NGINX.

sudo systemctl restart nginx

Skift derefter tilbage til din API-mappe, og start den.

node <filename>.js

Applikationen kører på port 80. Kør blot testen fra oven med Postman for at sikre, at alt fungerer korrekt.

Holder vores API kørende

I et produktionsmiljø vil du gerne sikre dig, at du har en procesleder til dine Node-applikationer, for at sikre, at de forbliver kørende for evigt i baggrunden. I denne vejledning vil vi bruge en procesmanager kaldet PM2 (Process Manager 2), som er en procesmanager for Node.js-applikationer, der vil holde dem i live for evigt med minimal nedetid. PM2 kommer med mange nyttige administrationsværktøjer, såsom stop, genindlæsning, pause og mere. For at installere PM2 skal du skrive følgende og vente på, at den installeres.

sudo npm install pm2 -g

Når det er installeret, skal du bare sørge for, at du er i projektbiblioteket, skrive følgende, og applikationen vil blive startet.

pm2 start <filename>.js

Håndtering af vores applikation med PM2

Som nævnt tidligere har PM2 nogle nyttige værktøjer, som du kan bruge til bedre at administrere din applikation.

  • pm2 stop- Som navnet antyder, giver dette dig mulighed for at stoppe den aktuelt kørende applikation og dræbe dens proces. Hvis din applikation giver et uventet resultat, vil det være nyttigt at stoppe den.

  • pm2 list- Listefunktionen giver dig mulighed for at se alle de aktuelt kørende applikationer via PM2, kortlagt efter deres navne. Hvis du hurtigt skal tjekke din applikations oppetid, bør du bruge dette værktøj.

  • pm2 restart- Hvis din applikation fryser af en eller anden grund, og du gerne vil genindlæse den, gør pm2 genstart netop det. Det vil dræbe ansøgningsprocessen og starte den igen under en anden proces.

  • pm2 monit- PM2's indbyggede monitorværktøj giver dig mulighed for at se en graf over din applikations specifikke detaljer, såsom CPU/RAM-brug, i en brugervenlig graf i ncurses-stil. Dette er nyttigt, hvis du gerne vil have et visuelt billede af din applikations belastning.

Afsluttende bemærkninger

Vi har nu fuldført vores opgave med at skabe en RESTful API ved at bruge Node.js, Express og omvendt proxying med NGINX. Du er velkommen til at udvide denne tutorial. Du kan gøre mange gode ting med din nye API, såsom tilføje autentificeringsmetoder, en database, bedre rute- og fejlhåndtering og meget, meget mere. Hvis du har et domæne, med en "A"-record allerede sat op til din IP-adresse, så vil du være i stand til at få adgang til din API fra dit domæne. Hvis du vil lære mere om Express.js, kan du besøge deres hjemmeside på http://expressjs.com . Besøg http://nginx.com for at lære mere om NGINX og omvendt proxy . For at læse mere om PM2, besøg deres side på http://pm2.keymetrics.io .


Installer Plesk på CentOS 7

Installer Plesk på CentOS 7

Bruger du et andet system? Plesk er et proprietært webhost kontrolpanel, der giver brugerne mulighed for at administrere deres personlige og/eller klienters websteder, databaser

Sådan konfigureres uovervågede opgraderinger på Debian 9 (Stretch)

Sådan konfigureres uovervågede opgraderinger på Debian 9 (Stretch)

Bruger du et andet system? Hvis du køber en Debian-server, bør du altid have de nyeste sikkerhedsrettelser og opdateringer, uanset om du sover eller ej

Sådan installeres Squid Proxy på CentOS

Sådan installeres Squid Proxy på CentOS

Squid er et populært, gratis Linux-program, der giver dig mulighed for at oprette en webproxy til videresendelse. I denne vejledning vil du se, hvordan du installerer Squid på CentOS for at gøre dig

Opsæt din egen DNS-server på Debian/Ubuntu

Opsæt din egen DNS-server på Debian/Ubuntu

Denne vejledning forklarer, hvordan man opsætter en DNS-server ved hjælp af Bind9 på Debian eller Ubuntu. Gennem hele artiklen skal du erstatte dit-domænenavn.com i overensstemmelse hermed. Ved th

Konfigurer Red5 Media Server på Ubuntu 16.04

Konfigurer Red5 Media Server på Ubuntu 16.04

Bruger du et andet system? Red5 er en open source medieserver implementeret i Java, der giver dig mulighed for at køre Flash multi-bruger applikationer såsom live streamin

Sådan installeres Vanilla Forum på Ubuntu 16.04

Sådan installeres Vanilla Forum på Ubuntu 16.04

Bruger du et andet system? Vanilla forum er en open source forumapplikation skrevet i PHP. Det er en fuldt tilpasselig, nem at bruge og understøtter ekstern

Installer Lynis på Debian 8

Installer Lynis på Debian 8

Introduktion Lynis er et gratis, open source-systemrevisionsværktøj, der bruges af mange systemadministratorer til at verificere integriteten og hærde deres systemer. jeg

Sådan installeres Microweber på CentOS 7

Sådan installeres Microweber på CentOS 7

Bruger du et andet system? Microweber er en open source træk og slip CMS og online shop. Microweber-kildekoden er hostet på GitHub. Denne guide vil vise dig

Installation af Microweber på Ubuntu 16.04

Installation af Microweber på Ubuntu 16.04

Bruger du et andet system? Microweber er en open source træk og slip CMS og online shop. Microweber-kildekoden er hostet på GitHub. Denne guide vil vise dig

Sådan installeres Mattermost 4.1 på CentOS 7

Sådan installeres Mattermost 4.1 på CentOS 7

Bruger du et andet system? Mattermost er et open source, selvhostet alternativ til Slack SAAS-meddelelsestjenesten. Med andre ord, med Mattermost er du ca

Sådan installeres dotCMS på Ubuntu 16.04

Sådan installeres dotCMS på Ubuntu 16.04

Bruger du et andet system? DotCMS er et open source, enterprise-grade content management system skrevet i Java. Den indeholder næsten alle nødvendige funktioner

Sådan installeres BigTree CMS på en Fedora 26 LAMP VPS

Sådan installeres BigTree CMS på en Fedora 26 LAMP VPS

Bruger du et andet system? BigTree CMS 4.2 er et hurtigt og let, gratis og open source, enterprise-grade content management system (CMS) med omfattende

Oprettelse af et netværk af Minecraft-servere med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Oprettelse af et netværk af Minecraft-servere med BungeeCord på Debian 8, Debian 9 eller CentOS 7

Hvad skal du bruge En Vultr VPS med mindst 1 GB RAM. SSH-adgang (med root/administrative rettigheder). Trin 1: Installation af BungeeCord Første ting først

Installation af Docker CE på Ubuntu 16.04

Installation af Docker CE på Ubuntu 16.04

Bruger du et andet system? Docker er et program, der gør det muligt at implementere programmer, der køres som containere. Det blev skrevet i det populære Go-programmin

Sådan installeres Golang 1.8.3 på CentOS 7, Ubuntu 16.04 og Debian 9

Sådan installeres Golang 1.8.3 på CentOS 7, Ubuntu 16.04 og Debian 9

Golang er et programmeringssprog udviklet af Google. Takket være sin alsidighed, enkelhed og pålidelighed er Golang blevet en af ​​de mest populære

Lad os kryptere på Plesk

Lad os kryptere på Plesk

Plesk-kontrolpanelet har en meget flot integration til Lets Encrypt. Lets Encrypt er en af ​​de eneste SSL-udbydere, der udleverer certifikater komplet

Lader kryptere på cPanel

Lader kryptere på cPanel

Lets Encrypt er en certifikatmyndighed dedikeret til at levere SSL-certifikater gratis. cPanel har bygget en pæn integration, så du og din klient

Nulstil MySQL Root Password på Debian/Ubuntu

Nulstil MySQL Root Password på Debian/Ubuntu

Hvis du har glemt din MySQL root-adgangskode, kan du nulstille den ved at følge trinene i denne artikel. Processen er ret enkel og fungerer på disse

Sådan installeres GoAccess på Ubuntu 16.04

Sådan installeres GoAccess på Ubuntu 16.04

Bruger du et andet system? GoAccess er en open source weblog-analysator. Du kan bruge det til analyse af logs på realtidsbasis i enten terminalen eller

Sådan installeres YOURLS på CentOS 7

Sådan installeres YOURLS på CentOS 7

YOURLS (Your Own URL Shortener) er en open source URL-forkortelse og dataanalyseapplikation. I denne artikel vil vi dække installationsprocessen

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 lige i nuet I denne blog Læs, hvordan kunstig intelligens-applikationer har påvirket forskellige sektorer.

DDOS-angreb: et kort overblik

DDOS-angreb: et kort overblik

Er du også et offer for DDOS-angreb og forvirret over forebyggelsesmetoderne? Læs denne artikel for at løse dine spørgsmål.

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Har du nogensinde spekuleret på, hvordan tjener hackere penge?

Du har måske hørt, at hackere tjener mange penge, men har du nogensinde spekuleret på, hvordan tjener de den slags penge? lad os diskutere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Revolutionære opfindelser fra Google, der vil gøre dit liv lettere.

Vil du se revolutionerende opfindelser fra Google, og hvordan disse opfindelser ændrede livet for ethvert menneske i dag? Læs derefter til bloggen for at se opfindelser fra Google.

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Fredag ​​Essential: Hvad skete der med AI-drevne biler?

Konceptet med selvkørende biler til at køre på vejene ved hjælp af kunstig intelligens er en drøm, vi har haft i et stykke tid nu. Men på trods af flere løfter er de ingen steder at se. Læs denne blog for at lære mere...

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Teknologisk singularitet: En fjern fremtid for menneskelig civilisation?

Efterhånden som videnskaben udvikler sig i et hurtigt tempo og overtager en stor del af vores indsats, stiger risikoen for at udsætte os selv for en uforklarlig Singularitet. Læs, hvad singularitet kunne betyde for os.

Udvikling af datalagring – Infografik

Udvikling af datalagring – Infografik

Opbevaringsmetoderne for dataene har været under udvikling, kan være siden fødslen af ​​dataene. Denne blog dækker udviklingen af ​​datalagring på basis af en infografik.

Funktioner af Big Data Reference Architecture Layers

Funktioner af Big Data Reference Architecture Layers

Læs bloggen for at kende forskellige lag i Big Data-arkitekturen og deres funktionaliteter på den enkleste måde.

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

6 fantastiske fordele ved at have smarte hjemmeenheder i vores liv

I denne digitalt drevne verden er smarte hjemmeenheder blevet en afgørende del af livet. Her er et par fantastiske fordele ved smarte hjemmeenheder om, hvordan de gør vores liv værd at leve og enklere.

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

macOS Catalina 10.15.4-tillægsopdatering forårsager flere problemer end at løse

For nylig udgav Apple macOS Catalina 10.15.4 en supplerende opdatering for at løse problemer, men det ser ud til, at opdateringen forårsager flere problemer, hvilket fører til mursten af ​​mac-maskiner. Læs denne artikel for at lære mere