Si të krijoni një API RESTful Node.js duke përdorur Express.js në Ubuntu 16.04 LTS

Në këtë tutorial, do të mësoni se si të konfiguroni një API të plotë RESTful, i cili do t'i shërbejë kërkesave HTTP duke përdorur Node.js dhe Express duke e bërë proksimin e kundërt me NGINX, në Ubuntu 16.04 LTS. Ne do të përdorim një aplikacion të quajtur Postman, një mjet shumë i njohur i zhvillimit të API, për të testuar API-në tonë dhe për t'u siguruar që është plotësisht funksionale dhe funksionon siç duhet. Node.js është një kornizë e shpejtë JavaScript ndër-platformë e bazuar në motorin V8 të Chrome. Përdoret si në aplikacionet e desktopit ashtu edhe në serverët dhe është i famshëm për trajtimin e ciklit të ngjarjeve me një fije të vetme. Ne do të përdorim Node.js si bazë për API-në tonë RESTful, të bashkuar me Express.js, kornizën tonë të aplikacionit në ueb të krijuar për Node.js. Express.js lëshohet si softuer i lirë dhe i hapur. Express është nga ana e serverit, i shkruar në JavaScript dhe është krijuar për ndërtimin e API-ve, gjë që e bën atë të përsosur për projektin tonë. Nga ana tjetër, Postman është një klient shumë i fuqishëm HTTP, me zhvillimin e API-së në mendje. Ai përmban të gjitha mjetet që mund të dëshironi për zhvillimin e API.

Instalimi i Postman

Së pari, ju dëshironi të shkoni te faqja e internetit e Postman dhe të shkarkoni dhe instaloni Postman për kompjuterin tuaj kryesor (jo serverin tuaj). Të gjitha udhëzimet e instalimit do të jenë në faqen e tyre të internetit.

Instalimi i Node.js

Për të filluar, fillimisht do të na duhet të instalojmë Node.js që të mund të fillojmë të zhvillojmë API-në tonë. Ne do të shkarkojmë dhe instalojmë Node.js nga faqja zyrtare e internetit.

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

Përveç kësaj, ju gjithashtu do të dëshironi të kapni mjetet e nevojshme të ndërtimit, të cilat do të jenë të dobishme në përpilimin e moduleve.

sudo apt-get install build-essential

Për këtë tutorial, ne do të përdorim versionin LTS të Node.js, i cili është versioni 8.9.3.

Duke inicializuar projektin tonë Node.js

Do të na duhet të inicializojmë një projekt të ri Node.js, i cili do të përmbajë një aplikacion. Për ta bërë këtë, krijoni një drejtori të re.

 mkdir expressapi 

Ndrysho në drejtorinë e re. Pasi të jeni brenda, ekzekutoni npm initdhe plotësoni të gjitha kërkesat e kërkuara. Mbani shënim "pikën hyrëse" të aplikacionit tuaj: ju do ta krijoni këtë skedar më vonë. Pasi të keni mbaruar, do të shihni një package.jsonskedar në drejtorinë tuaj aktuale. Ai vepron si një përshkrim i projektit tonë dhe rendit të gjitha varësitë e nevojshme për të funksionuar.

Konfigurimi i Express.js

Tani do të konfigurojmë Express.js dhe varësitë e tij.

npm install express

Procesi i instalimit do të fillojë. Do të duhen disa minuta që gjithçka të përfundojë shkarkimin.

Fillimi i skedarit tonë kryesor

Më pas, ne do të krijojmë skedarin tonë kryesor fillestar për API-në tonë. Këtu do të përdorni "pikën hyrëse" që keni parë në package.jsonskedar. Për hir të këtij tutoriali, unë do të përdor skemën e paracaktuar të emërtimit, index.js.

touch index.js

Pastaj, hapeni në redaktuesin e tekstit nano.

nano index.js

Në skedarin tonë kryesor, ne duam së pari të telefonojmë të gjitha paketat tona kryesore dhe të regjistrojmë rrugët tona.

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

Në thelb ajo që ne po bëjmë këtu është inicializimi i aplikacionit tonë dhe vendosja e një ruteri bazë për API-në tonë. Vini re se ne kemi vendosur portin e aplikacionit tonë në 8080. Do të na duhet ky numër kur të konfigurojmë API-në tonë RESTful. Tani jemi gati të vazhdojmë dhe të testojmë API-në tonë.

Testimi i API-së tonë me Postman

Në drejtorinë e projektit, ekzekutoni sa më poshtë.

node <filename>.js

Kjo do të nisë API-në, ku <filename>është skedari fillestar që keni specifikuar në package.jsonskedar. Pastaj, hapni Postman në PC/Mac tuaj dhe klikoni Newbutonin " " në këndin e sipërm djathtas, më pas kliko " Request". Kur atje, ju duhet të shihni një shirit që thotë " GET" pranë tij. Këtu do të futim URL-në e kërkesës sonë. Thjesht futni sa vijon në seksionin e URL-së së kërkesës dhe klikoni " Send".

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

Do të shihni " 'API is online'".

Rrugët API

Për të trajtuar rrugët, ne do të përdorim ruterin Express. Nëse nuk e dini se çfarë është një ruter, në thelb është mënyra se si pikat fundore të aplikacionit u përgjigjen kërkesave të klientit. Këtu janë rrugët që do të vendosim si shembull:

  • /api/numbers - Tregon të gjithë numrat nga 1-10.

  • /api/letters - Tregon të gjitha shkronjat nga AZ.

Tani ne do të krijojmë strukturën tonë të parë të ndërmjetësimit të rrugës, si kjo.

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ë këtë shembull, ne vendosëm një situatë ku një përdorues mund të kërkojë shumën e një numri + 1 duke dhënë formën e fjalës së tij, duke përdorur metodën GET. Ne përdorim router.route()funksionin për të treguar se cilin numër duam të kthejmë si rezultat. Parametrat emërtohen me një " :" përpara tyre. Ne i aksesojmë këto parametra nëpërmjet req.params.

Ja një shembull me shkronja.

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

Ne përdorim të njëjtën metodë si më sipër, por e kthejmë letrën si të kapitalizuar.

Hyrje në NGINX

NGINX është një softuer i njohur me burim të hapur që përdoret për shërbime në ueb, proxies të kundërt, transmetim dhe më shumë. Ne do të përdorim NGINX për të kthyer proxy API-në tonë, për të na lejuar ta ekzekutojmë atë në port 80, sepse Node.js nuk lejon lidhje në porte më të vogla se 1024 pa qasje rrënjësore. Kjo mund të jetë e dobishme kur lidhni domenin tuaj me serverin tuaj.

Konfigurimi i NGINX

Për të filluar instalimin e NGINX, do t'ju duhet të ekzekutoni sa më poshtë në terminalin tuaj dhe të prisni që instalimi të përfundojë.

sudo apt-get install nginx

Më pas, ne do të dëshirojmë të krijojmë skedarin tonë të faqes që NGINX do ta përdorë për të kthyer proxy të aplikacionit tonë.

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

Plotësoni skedarin me sa vijon, më pas CTRL+ Opër ta ruajtur.

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

Duke përdorur të njëjtin port në të cilin kemi ekzekutuar aplikacionin tonë më herët, ne po i themi Nginx që të ridrejtojë të gjitha kërkesat nga adresa jonë IP në port 80në API-në tonë që funksionon në port 8080.

Më pas, aktivizoni përfaqësuesin e kundërt duke sinkronizuar skedarin tonë të krijuar rishtazi me sites-availabledosjen:

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

Kjo do të sigurojë që NGINX do të ndryshojë API-në tonë të përfaqësuesit.

Ekzekutimi i parë me NGINX

Pasi të kemi përfunduar konfigurimin tonë NGINX, ne do të fillojmë NGINX, më pas do të fillojmë API-në tonë. Së pari, rinisni NGINX.

sudo systemctl restart nginx

Më pas, kthehuni në drejtorinë tuaj API dhe filloni atë.

node <filename>.js

Aplikacioni do të ekzekutohet në port 80. Thjesht kryeni testin nga lart me Postman, për t'u siguruar që gjithçka po funksionon siç duhet.

Mbajtja e API-së tonë në funksion

Në një mjedis prodhimi, ju dëshironi të siguroheni që të keni një menaxher procesi për aplikacionet tuaja Node, për t'u siguruar që ato të qëndrojnë të funksionojnë përgjithmonë në sfond. Në këtë tutorial, ne do të përdorim një menaxher procesi të quajtur PM2 (Process Manager 2), i cili është një menaxher procesi për aplikacionet Node.js që do t'i mbajë ato të gjalla përgjithmonë me kohë minimale joproduktive. PM2 vjen me shumë mjete të dobishme të menaxhimit, të tilla si ndalimi, ringarkimi, ndalimi dhe më shumë. Për të instaluar PM2, shkruani sa vijon dhe prisni që të instalohet.

sudo npm install pm2 -g

Pasi të jetë instaluar, gjithçka që duhet të bëni është të siguroheni që jeni në drejtorinë e projektit, shkruani sa vijon dhe aplikacioni do të fillojë.

pm2 start <filename>.js

Menaxhimi i aplikacionit tonë me PM2

Siç u përmend më herët, PM2 ka disa mjete të dobishme që mund t'i përdorni për të menaxhuar më mirë aplikacionin tuaj.

  • pm2 stop- Siç sugjeron emri, kjo ju lejon të ndaloni aplikacionin aktualisht në punë dhe të mbyllni procesin e tij. Nëse aplikacioni juaj po prodhon një rezultat të papritur, atëherë ndalimi i tij do të jetë i dobishëm.

  • pm2 list- Funksioni i listës ju lejon të shihni të gjitha aplikacionet aktualisht të ekzekutuara nëpërmjet PM2, të përcaktuara sipas emrave të tyre. Nëse keni nevojë të kontrolloni shpejt kohën e përdorimit të aplikacionit tuaj, duhet të përdorni këtë mjet.

  • pm2 restart- Nëse aplikacioni juaj ngrin për ndonjë arsye dhe dëshironi ta rifreskoni, rinisja e pm2 bën pikërisht këtë. Do të vrasë procesin e aplikimit dhe do ta fillojë përsëri, nën një proces tjetër.

  • pm2 monit- Mjeti i integruar i monitorit i PM2 ju lejon të shikoni një grafik të detajeve specifike të aplikacionit tuaj, si p.sh. përdorimi i CPU/RAM, në një grafik të stilit ncurses miqësor për përdoruesit. Kjo është e dobishme nëse dëshironi një pamje vizuale të ngarkesës së aplikacionit tuaj.

Vërejtje përfundimtare

Tani kemi përfunduar detyrën tonë për të krijuar një API RESTful, duke përdorur Node.js, Express dhe duke e kthyer atë në anën e kundërt me NGINX. Mos ngurroni të zgjeroni këtë tutorial. Ju mund të bëni shumë gjëra të shkëlqyera me API-në tuaj të re, të tilla si shtimi i metodave të vërtetimit, një bazë të dhënash, trajtimi më i mirë i rrugës dhe gabimeve, dhe shumë e shumë më tepër. Nëse keni një domen, me një rekord "A" tashmë të vendosur në adresën tuaj IP, atëherë do të jeni në gjendje të përdorni API-në tuaj nga domeni juaj. Nëse dëshironi të mësoni më shumë rreth Express.js, vizitoni uebsajtin e tyre në http://expressjs.com . Për të mësuar më shumë rreth NGINX dhe proksimit të kundërt, vizitoni http://nginx.com . Për të lexuar më shumë rreth PM2, vizitoni faqen e tyre në http://pm2.keymetrics.io .


Instaloni Plesk në CentOS 7

Instaloni Plesk në CentOS 7

Përdorimi i një sistemi të ndryshëm? Plesk është një panel kontrolli i pronarit të hostit në internet që lejon përdoruesit të administrojnë faqet e tyre të internetit personale dhe/ose të klientëve, bazat e të dhënave

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Instaloni Lets Encrypt SSL në aplikacionin WordPress me një klik

Hyrje Lets Encrypt është një shërbim i autoritetit certifikues që ofron certifikata falas TLS/SSL. Procesi i instalimit është thjeshtuar nga Certbot,

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

Si të instaloni dhe konfiguroni PHP 7.0 ose PHP 7.1 në Ubuntu 16.04

PHP dhe paketat e lidhura me to janë komponentët më të përdorur gjatë vendosjes së një serveri në internet. Në këtë artikull, ne do të mësojmë se si të konfigurojmë PHP 7.0 ose PHP 7.1 o

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Si të instaloni Lighttpd (LLMP Stack) në CentOS 6

Hyrje Lighttpd është një fork i Apache që synon të jetë shumë më pak intensiv me burime. Është i lehtë, prandaj emri i tij, dhe është mjaft i thjeshtë për t'u përdorur. Instaloni

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

Tre panele kontrolli të serverit falas (Instalim i shpejtë)

1. Virtualmin/Webmin Virtualmin është një panel kontrolli i fuqishëm dhe fleksibël i hostimit në internet për sistemet Linux dhe UNIX i bazuar në bazën e mirënjohur të internetit me burim të hapur.

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Vendosja e një aplikacioni Yii në Ubuntu 14.04

Yii është një kornizë PHP që ju lejon të zhvilloni aplikacione më shpejt dhe më lehtë. Instalimi i Yii në Ubuntu është i thjeshtë, siç do të mësoni saktësisht

Përdorimi i ekranit në Ubuntu 14.04

Përdorimi i ekranit në Ubuntu 14.04

Screen është një aplikacion që lejon përdorimin e shumëfishtë të sesioneve të terminalit brenda një dritareje. Kjo ju lejon të simuloni dritare të shumta terminale ku është ma

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Konfiguro serverin tuaj DNS në Debian/Ubuntu

Ky tutorial shpjegon se si të konfiguroni një server DNS duke përdorur Bind9 në Debian ose Ubuntu. Gjatë gjithë artikullit, zëvendësoni emrin e domain-it tuaj në përputhje me rrethanat. Në

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Përdorimi i Logrotate për të menaxhuar skedarët e regjistrave

Hyrje Logrotate është një mjet Linux që thjeshton administrimin e skedarëve të regjistrit. Zakonisht funksionon një herë në ditë përmes një pune cron dhe menaxhon bazën e regjistrave

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

Konfigurimi i rrjeteve statike dhe IPv6 në CentOS 7

VULTR kohët e fundit ka bërë ndryshime në fund të tyre dhe gjithçka duhet të funksionojë mirë tani me NetworkManager të aktivizuar. Nëse dëshironi të çaktivizoni

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Modifikimi i Icinga2 për të përdorur Modelin Master/Klient në CentOS 6 ose CentOS 7

Icinga2 është një sistem i fuqishëm monitorimi dhe kur përdoret në një model master-klient, ai mund të zëvendësojë nevojën për kontrolle monitorimi të bazuara në NRPE. Master-klien

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Përpiloni dhe instaloni Nginx me Modulin e PageSpeed ​​në Debian 8

Në këtë artikull, ne do të shohim se si të përpiloni dhe instaloni Nginx mainline nga burimet zyrtare të Nginx me modulin PageSpeed, i cili ju lejon t

Si të instaloni Gitea në Debian 9

Si të instaloni Gitea në Debian 9

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga Git. Gitea është shkruar në Golang dhe është

Si të instaloni Gitea në Ubuntu 18.04

Si të instaloni Gitea në Ubuntu 18.04

Përdorimi i një sistemi të ndryshëm? Gitea është një sistem alternativ i kontrollit të versionit me burim të hapur, i vetë-pritur, i mundësuar nga git. Gitea është shkruar në Golang dhe është

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Si të instaloni MODX Revolution në një FreeBSD 11 FAMP VPS

Përdorimi i një sistemi të ndryshëm? MODX Revolution është një Sistem i Menaxhimit të Përmbajtjes (CMS) i shpejtë, fleksibël, i shkallëzuar, me burim të hapur, i shkallës së ndërmarrjes, i shkruar në PHP. Ajo i

Instalimi i Docker CE në Ubuntu 16.04

Instalimi i Docker CE në Ubuntu 16.04

Përdorimi i një sistemi të ndryshëm? Docker është një aplikacion që lejon vendosjen e programeve që ekzekutohen si kontejnerë. Ishte shkruar në programin popullor Go

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Si të instaloni Golang 1.8.3 në CentOS 7, Ubuntu 16.04 dhe Debian 9

Golang është një gjuhë programimi e zhvilluar nga Google. Falë shkathtësisë, thjeshtësisë dhe besueshmërisë së tij, Golang është bërë një nga më të populluarit

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Përmirësimi i shfrytëzimit të lopës së pistë në CentOS

Çfarë është Lopa e Pistë (CVE-2016-5195)? Dobësia e Dirty Cow shfrytëzohet përmes mënyrës se si Linux përpunon kodin. Ai lejon që një përdorues i paprivilegjuar të gai

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Konfiguro një përdorues jo-rrënjë me Sudo Access në Ubuntu

Të kesh vetëm një përdorues, i cili është root, mund të jetë i rrezikshëm. Pra, le ta rregullojmë atë. Vultr na ofron lirinë për të bërë si të duam me përdoruesit dhe serverët tanë

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Rivendosni fjalëkalimin rrënjësor MySQL në Debian/Ubuntu

Nëse e keni harruar fjalëkalimin tuaj rrënjësor MySQL, mund ta rivendosni atë duke ndjekur hapat në këtë artikull. Procesi është mjaft i thjeshtë dhe funksionon në to

Ngritja e makinave: Aplikimet në botën reale të AI

Ngritja e makinave: Aplikimet në botën reale të AI

Inteligjenca Artificiale nuk është në të ardhmen, është këtu në të tashmen Në këtë blog Lexoni se si aplikacionet e inteligjencës artificiale kanë ndikuar në sektorë të ndryshëm.

Sulmet DDOS: Një përmbledhje e shkurtër

Sulmet DDOS: Një përmbledhje e shkurtër

A jeni edhe ju viktimë e Sulmeve DDOS dhe jeni konfuz në lidhje me metodat e parandalimit? Lexoni këtë artikull për të zgjidhur pyetjet tuaja.

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

A e keni pyetur ndonjëherë veten se si fitojnë para hakerët?

Ju mund të keni dëgjuar se hakerët fitojnë shumë para, por a keni menduar ndonjëherë se si i fitojnë ato para? Le te diskutojme.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Shpikjet revolucionare nga Google që do tju bëjnë të lehtë jetën tuaj.

Dëshironi të shihni shpikjet revolucionare nga Google dhe se si këto shpikje ndryshuan jetën e çdo njeriu sot? Më pas lexoni në blog për të parë shpikjet nga Google.

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

E Premte Thelbësore: Çfarë ndodhi me Makinat e drejtuara nga AI?

Koncepti i makinave vetë-drejtuese për të dalë në rrugë me ndihmën e inteligjencës artificiale është një ëndërr që e kemi prej kohësh. Por, pavarësisht nga disa premtime, ato nuk shihen askund. Lexoni këtë blog për të mësuar më shumë…

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Singulariteti teknologjik: Një e ardhme e largët e qytetërimit njerëzor?

Ndërsa Shkenca evoluon me një ritëm të shpejtë, duke marrë përsipër shumë nga përpjekjet tona, rriten edhe rreziqet për t'iu nënshtruar një Singulariteti të pashpjegueshëm. Lexoni, çfarë mund të thotë singulariteti për ne.

Evolucioni i ruajtjes së të dhënave - Infografik

Evolucioni i ruajtjes së të dhënave - Infografik

Metodat e ruajtjes së të dhënave kanë evoluar mund të jenë që nga lindja e të dhënave. Ky blog mbulon evolucionin e ruajtjes së të dhënave në bazë të një infografike.

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Funksionalitetet e shtresave të arkitekturës së referencës së të dhënave të mëdha

Lexoni blogun për të njohur shtresat e ndryshme në arkitekturën e të dhënave të mëdha dhe funksionalitetet e tyre në mënyrën më të thjeshtë.

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

6 Përfitimet e mahnitshme të të pasurit pajisje shtëpiake inteligjente në jetën tonë

Në këtë botë të drejtuar nga dixhitali, pajisjet inteligjente të shtëpisë janë bërë një pjesë thelbësore e jetës. Këtu janë disa përfitime të mahnitshme të pajisjeve shtëpiake inteligjente se si ato e bëjnë jetën tonë të vlefshme dhe më të thjeshtë.

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Përditësimi shtesë i macOS Catalina 10.15.4 po shkakton më shumë probleme sesa zgjidhja

Së fundmi Apple lëshoi ​​macOS Catalina 10.15.4 një përditësim shtesë për të rregulluar problemet, por duket se përditësimi po shkakton më shumë probleme që çojnë në bricking të makinerive mac. Lexoni këtë artikull për të mësuar më shumë