Cum se creează o API RESTful Node.js folosind Express.js pe Ubuntu 16.04 LTS

În acest tutorial, veți învăța cum să configurați o API RESTful completă, care va servi solicitările HTTP folosind Node.js și Express în timp ce o proxy inversă cu NGINX, pe Ubuntu 16.04 LTS. Vom folosi o aplicație numită Postman, un instrument de dezvoltare API foarte cunoscut, pentru a testa API-ul nostru și a ne asigura că este complet funcțional și funcționează corect. Node.js este un cadru JavaScript rapid și multiplă platforme bazat pe motorul V8 Chrome. Este utilizat atât pentru aplicații desktop cât și pentru server și este renumit pentru tratarea buclelor de evenimente cu un singur fir. Vom folosi Node.js ca backend pentru API-ul nostru RESTful, la pachet cu Express.js, cadrul nostru de aplicații web construit pentru Node.js. Express.js este lansat ca software gratuit și deschis. Express este din partea serverului, scris în JavaScript și este proiectat pentru construirea de API-uri, ceea ce îl face perfect pentru proiectul nostru. Pe de altă parte, Postman este un client HTTP foarte puternic, având în vedere dezvoltarea API. Dispune de toate instrumentele pe care le-ați putea dori pentru dezvoltarea API.

Instalarea poștașului

În primul rând, doriți să vă îndreptați pe site-ul Postman și să descărcați și să instalați Postman pentru computerul principal (Nu serverul dvs.). Toate instrucțiunile de instalare vor fi pe site-ul lor web.

Instalarea Node.js

Pentru început, va trebui mai întâi să instalăm Node.js pentru a putea începe dezvoltarea API-ului nostru. Vom descărca și instala Node.js de pe site-ul oficial.

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

În plus, veți dori, de asemenea, să preluați instrumentele de construire necesare, care vă vor fi de ajutor în compilarea modulelor.

sudo apt-get install build-essential

Pentru acest tutorial, vom folosi versiunea LTS a Node.js, care este versiunea 8.9.3.

Inițializarea proiectului Node.js

Va trebui să inițializăm un nou proiect Node.js, care va conține o aplicație. Pentru a face acest lucru, creați un nou director.

 mkdir expressapi 

Modificați în noul director. Odată ajuns în interior, rulați npm initși completați toate indicațiile solicitate. Rețineți „punctul de intrare” al aplicației dvs.: veți crea acest fișier mai târziu. După ce ai terminat, vei vedea un package.jsonfișier în directorul tău curent. Acționează ca o descriere a proiectului nostru și listează toate dependențele necesare pentru a funcționa.

Configurarea Express.js

Acum vom configura Express.js și sunt dependențele.

npm install express

Procesul de instalare va începe. Va dura câteva minute până când totul va termina descărcarea.

Pornirea fișierului nostru principal

În continuare, vom crea fișierul principal de pornire pentru API-ul nostru. Iată unde veți folosi „punctul de intrare” pe care l-ați văzut în package.jsonfișier. De dragul acestui tutorial, voi folosi schema de denumire implicită index.js,.

touch index.js

Apoi, deschideți-l în editorul de text nano.

nano index.js

În fișierul nostru principal, dorim să apelăm mai întâi la toate pachetele noastre principale și să ne înregistrăm rutele.

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

Practic, ceea ce facem aici este inițializarea aplicației noastre și crearea unui router de bază pentru API-ul nostru. Rețineți că am setat portul aplicației noastre la 8080. Vom avea nevoie de acest număr pentru când vom configura API-ul nostru RESTful. Acum suntem gata să mergem mai departe și să ne testăm API-ul.

Testarea API-ului nostru cu Postman

În directorul de proiecte, executați următoarele.

node <filename>.js

Aceasta va începe API-ul, unde <filename>este fișierul de start specificat în package.jsonfișier. Apoi, deschideți Postman pe PC / Mac și faceți clic pe Newbutonul " " din colțul din dreapta sus, apoi faceți clic pe " Request". Când este acolo, ar trebui să vezi o bară care spune " GET" lângă ea. Aici vom introduce adresa URL a solicitării noastre. Pur și simplu introduceți următoarele în secțiunea URL a cererii și faceți clic pe " Send"

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

Vei vedea " 'API is online'".

Rute API

Pentru a gestiona rutele, vom folosi routerul Express. Dacă nu știți ce este un router, este în esență modul în care punctele finale ale aplicației răspund la solicitările clientului. Iată rutele pe care le vom seta ca exemplu:

  • /api/numbers - Afișează toate numerele de la 1-10.

  • /api/letters - Prezintă toate scrisorile de la AZ.

Acum vom stabili prima noastră structură de middleware de rută, ca atare.

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

În acest exemplu, stabilim o situație în care un utilizator poate solicita suma unui număr + 1 furnizând forma de cuvânt a acestuia, folosind metoda GET. Folosim router.route()funcția pentru a indica ce număr dorim să trimitem înapoi. Parametrii sunt numiți cu un " :" în fața lor. Accesăm acești parametri (parametri) prin req.params.

Iată un exemplu cu litere.

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

Folosim aceeași metodă ca mai sus, dar trimitem înapoi scrisoarea cu majuscule.

Introducere în NGINX

NGINX este un bine-cunoscut software open-source folosit pentru servirea web, proxie inversă, streaming și multe altele. Vom folosi NGINX pentru a inversa proxy-ul API-ului nostru, pentru a ne permite să-l rulăm pe port 80, deoarece Node.js nu permite conexiuni pe porturi mai mici de 1024 fără acces root. Acest lucru poate fi util atunci când conectați domeniul dvs. la server.

Configurarea NGINX

Pentru a începe instalarea NGINX, va trebui să rulați următoarele în terminalul dvs. și să așteptați finalizarea instalării.

sudo apt-get install nginx

În continuare, vom dori să creăm fișierul nostru de site pe care NGINX îl va folosi pentru a inversa aplicația noastră proxy.

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

Populați fișierul cu următoarele, apoi CTRL+ Opentru a-l salva.

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

Folosind același port cu care am rulat aplicația mai devreme, îi spunem Nginx să redirecționeze toate cererile de la adresa noastră IP din port 80către API-ul care rulează pe port 8080.

Apoi, activați proxy-ul invers prin sincronizarea fișierului nostru nou creat în sites-availablefolder:

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

Acest lucru vă va asigura că NGINX va inversa proxy-ul API-ului nostru.

Mai întâi rulează cu NGINX

După ce am terminat configurația NGINX, vom începe NGINX, apoi vom începe API-ul nostru. În primul rând, reporniți NGINX.

sudo systemctl restart nginx

Apoi, schimbați-vă în directorul API și începeți-l.

node <filename>.js

Aplicația va rula, pe port 80. Pur și simplu executați testul de mai sus cu Postman, pentru a vă asigura că totul funcționează corect.

Menținerea funcționării API-ului nostru

Într-un mediu de producție, doriți să vă asigurați că aveți un manager de proces pentru aplicațiile dvs. Node, pentru a vă asigura că acestea rămân pentru totdeauna în fundal. În acest tutorial, vom folosi un manager de proces numit PM2 (Process Manager 2), care este un manager de proces pentru aplicațiile Node.js care le va menține în viață pentru totdeauna cu un timp de oprire minim. PM2 vine cu multe instrumente de management utile, cum ar fi oprirea, reîncărcarea, întreruperea și multe altele. Pentru a instala PM2, tastați următoarele și așteptați instalarea acestuia.

sudo npm install pm2 -g

După instalare, tot ce trebuie să faceți este să vă asigurați că vă aflați în directorul de proiect, tastați următoarele și aplicația va fi pornită.

pm2 start <filename>.js

Gestionarea aplicației noastre cu PM2

După cum am menționat anterior, PM2 are câteva instrumente utile pe care le puteți utiliza pentru a vă gestiona mai bine aplicația.

  • pm2 stop- După cum sugerează și numele, acest lucru vă permite să opriți aplicația în curs de execuție și să omori procesul acesteia. Dacă aplicația dvs. produce un rezultat neașteptat, oprirea ei va veni la îndemână.

  • pm2 list- Funcția listă vă permite să vedeți toate aplicațiile care rulează în mod curent prin PM2, mapate după numele lor. Dacă trebuie să verificați rapid timpul de funcționare al aplicației, ar trebui să utilizați acest instrument.

  • pm2 restart- Dacă aplicația dvs. îngheață dintr-un motiv oarecare și doriți să o reîncărcați, pm2 restart face exact asta. Acesta va ucide procesul de aplicare și va începe din nou, în cadrul unui alt proces.

  • pm2 monit- Instrumentul de monitorizare integrat al PM2 vă permite să vizualizați un grafic al detaliilor specifice ale aplicației dvs., cum ar fi utilizarea procesorului / RAM-ului, într-un grafic în stil ncurses ușor de utilizat. Acest lucru este util dacă doriți o imagine vizuală a încărcării aplicației.

Observații finale

Am finalizat acum sarcina noastră de a crea o API RESTful, folosind Node.js, Express și o redirecționăm invers cu NGINX. Simțiți-vă liber să vă extindeți la acest tutorial. Puteți face multe lucruri minunate cu noua dvs. API, cum ar fi adăugați metode de autentificare, o bază de date, o mai bună gestionare a rutelor și a erorilor și multe altele. Dacă aveți un domeniu, cu o înregistrare „A” deja configurată pe adresa dvs. IP, atunci veți putea accesa API-ul dvs. din domeniul dvs. Dacă doriți să aflați mai multe despre Express.js, vizitați site-ul lor la http://expressjs.com . Pentru a afla mai multe despre NGINX și despre proxy-ul invers, vizitați http://nginx.com . Pentru a citi mai multe despre PM2, vizitați pagina lor la http://pm2.keymetrics.io .



Leave a Comment

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Cum se instalează Anchor CMS pe un VPS Fedora 26 LAMP

Folosind un sistem diferit? Anchor CMS este un motor de blog de sistem de gestionare a conținutului (CMS) super-simplu și extrem de ușor, gratuit și deschis

Configurare partajare NFS pe Debian

Configurare partajare NFS pe Debian

NFS este un sistem de fișiere bazat pe rețea care permite computerelor să acceseze fișiere într-o rețea de calculatoare. Acest ghid explică modul în care puteți expune folderele peste NF

Configurați un server TeamTalk pe Linux

Configurați un server TeamTalk pe Linux

TeamTalk este un sistem de conferințe care permite utilizatorilor să aibă conversații audio / video de înaltă calitate, chat de text, transfer de fișiere și partajare ecrane. Este

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Folosind cheia SSH pentru a vă conecta la utilizatori non-root

Vultr oferă o caracteristică care vă permite să preinstalați cheile SSH la crearea unei noi instanțe. Acest lucru vă permite să accesați utilizatorul root al serverelor, totuși

Cum se instalează Ranger Terminal File Manager pe Linux

Cum se instalează Ranger Terminal File Manager pe Linux

Ranger este un manager de fișiere bazat pe linia de comandă cu legături de cheie VI. Oferă o interfață de blestem minimalistă și frumoasă, cu o vedere asupra ierarhiei de directoare

Cum se instalează Redmine pe Ubuntu 16.04

Cum se instalează Redmine pe Ubuntu 16.04

Folosind un sistem diferit? Redmine este un instrument gratuit și deschis de gestionare a proiectelor bazat pe web. Este scris în Ruby on Rails și acceptă mai multe baze de date

Instalare RethinkDB Cluster pe CentOS 7

Instalare RethinkDB Cluster pe CentOS 7

Introducere RethinkDB este o bază de date NoSQL care stochează date sub formă de documente JSON. Are un limbaj de interogare super intuitiv și are funcții disponibile în mod obișnuit

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Cum se construiește Brotli din sursă pe Ubuntu 18.04 LTS

Folosind un sistem diferit? Brotli este o nouă metodă de compresie cu un raport de compresie mai bun decât GZIP. Codul sursă este găzduit public pe acest Githu

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

Configurarea conturilor de utilizator numai SFTP pe CentOS 7

În anumite ocazii, este posibil ca un administrator de sistem să aibă nevoie să creeze un cont de utilizator și să restricționeze accesul acestora la gestionarea propriilor fișiere prin sFTP, dar nu b

Utilizarea vizualizărilor MySQL pe Debian 7

Utilizarea vizualizărilor MySQL pe Debian 7

Introducere MySQL are o caracteristică excelentă cunoscută sub numele de vizualizări. Vizualizările sunt interogări stocate. Gândiți-vă la ele ca la un alias pentru o întrebare altfel lungă. În acest ghid,

Cum se instalează Nginx 1.14 pe Arch Linux

Cum se instalează Nginx 1.14 pe Arch Linux

Cerințe preliminare Un server Vultr care funcționează actualizat Arch Linux (vezi acest articol.) Acces Sudo. Comenzile care trebuie rulate ca root sunt prefixate de #. Th

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Dezactivați sau restricționați conectarea rădăcină prin SSH pe Linux

Permiterea autentificării root pe SSH este de obicei considerată o practică slabă de securitate în întreaga industrie tehnologică. În schimb, puteți efectua administrativ sensibil

Cum se instalează Seafile Server pe Ubuntu 16.10

Cum se instalează Seafile Server pe Ubuntu 16.10

Folosind un sistem diferit? Seafile (versiunea comunității) este o soluție gratuită și deschisă de sincronizare și partajare a fișierelor, care este similară cu ownCloud. De-a lungul spiritului

Cum să compilați Nginx din sursă pe CentOS 7

Cum să compilați Nginx din sursă pe CentOS 7

Folosind un sistem diferit? NGINX poate fi utilizat ca server HTTP / HTTPS, server proxy invers, server proxy de poștă, echilibrator de sarcină, terminator TLS sau cachin

Cum se instalează Thelia 2.3 pe Debian 9

Cum se instalează Thelia 2.3 pe Debian 9

Folosind un sistem diferit? Thelia este un instrument open source pentru crearea de site-uri web pentru e-business și gestionarea conținutului online scris în PHP. Codul sursă Thelia i

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Cum se instalează DokuWiki pe Ubuntu 16.04 LTS

Folosind un sistem diferit? DokuWiki este un program wiki open source scris în PHP care nu necesită o bază de date. Stochează date în fișiere text. DokuWik

Configurarea unui chroot pe Debian

Configurarea unui chroot pe Debian

Acest articol vă va învăța cum să configurați o închisoare chroot pe Debian. Presupun că utilizați Debian 7.x. Dacă executați Debian 6 sau 8, acest lucru poate funcționa, bine

Cum se instalează PiVPN pe Debian

Cum se instalează PiVPN pe Debian

Introducere Un mod ușor de a configura un server VPN pe Debian este cu PiVPN. PiVPN este un instalator și un pachet pentru OpenVPN. Creează comenzi simple pentru tine

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Cum se instalează Chamilo 1.11.8 pe CentOS 7

Folosind un sistem diferit? Chamilo este un sistem gratuit și deschis de management al învățării (LMS), care este utilizat pe scară largă pentru educația online și colaborarea în echipă

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

Instalați Nginx, Wordpress și permiteți criptarea în minute cu EasyEngine pe Debian 8 sau Ubuntu 16.04

EasyEngine (ee) este un instrument Python care vă permite să gestionați ușor și automat site-urile Wordpress de pe Nginx. Folosind EasyEngine, nu va trebui să dați

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe