Kuidas luua Node.js RESTful API, kasutades Express.js-i Ubuntu 16.04 LTS-is

Sellest õpetusest saate teada, kuidas seadistada täielik RESTful API, mis teenindab HTTP-päringuid Node.js-i ja Expressi abil, puhverdades samal ajal NGINX-iga, Ubuntu 16.04 LTS-is. Kasutame rakendust nimega Postman, väga tuntud API arendustööriist, et testida meie API-d ja veenduda, et see on täielikult funktsionaalne ja töötab korralikult. Node.js on kiire, platvormideülene JavaScripti raamistik, mis põhineb Chrome'i V8 mootoril. Seda kasutatakse nii töölaua- kui ka serverirakendustes ning see on kuulus oma ühe lõimega sündmusteahela käsitlemise poolest. Kasutame Node.js-i oma RESTful API taustaprogrammina, mis on komplektis meie Node.js-i jaoks loodud veebirakenduste raamistikuga Express.js. Express.js avaldatakse tasuta ja avatud tarkvarana. Express on serveripoolne, kirjutatud JavaScriptis ja mõeldud API-de loomiseks, mis muudab selle meie projekti jaoks ideaalseks. Teisest küljest on Postman väga võimas HTTP-klient, pidades silmas API arendamist. See sisaldab kõiki tööriistu, mida võite API arendamiseks soovida.

Postimehe installimine

Esiteks soovite minna Postmani veebisaidile ning alla laadida ja installida Postmani oma põhiarvutisse (mitte teie serverisse). Kõik paigaldusjuhised on nende veebisaidil.

Node.js installimine

Alustuseks peame esmalt installima Node.js'i, et saaksime alustada API arendamist. Laadime alla ja installime Node.js'i ametlikult veebisaidilt.

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

Lisaks tahad kaasa haarata ka vajalikud ehitustööriistad, millest on abi moodulite koostamisel.

sudo apt-get install build-essential

Selle õpetuse jaoks kasutame Node.js LTS-versiooni, mille versioon on 8.9.3.

Meie Node.js projekti lähtestamine

Peame lähtestama uue Node.js projekti, mis sisaldab rakendust. Selleks looge uus kataloog.

 mkdir expressapi 

Muutke uude kataloogi. Kui olete sees, käivitage npm initja täitke kõik nõutavad juhised. Pidage meeles oma rakenduse "sisenemispunkti": loote selle faili hiljem. Kui olete lõpetanud, näete package.jsonoma praeguses kataloogis faili. See toimib meie projekti kirjeldusena ja loetleb kõik funktsioneerimiseks vajalikud sõltuvused.

Express.js seadistamine

Nüüd konfigureerime faili Express.js ja selle sõltuvused.

npm install express

Installiprotsess algab. Allalaadimise lõpuleviimiseks kulub mõni minut.

Meie põhifaili käivitamine

Järgmisena loome oma API jaoks peamise lähtefaili. Siin saate kasutada package.jsonfailis nähtud "sisenemispunkti" . Selle õpetuse huvides kasutan vaikimisi nimetamisskeemi index.js.

touch index.js

Seejärel avage see nano tekstiredaktoris.

nano index.js

Meie põhifailis tahame kõigepealt helistada kõikidele põhipakettidele ja registreerida oma marsruudid.

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

Põhimõtteliselt käivitame siin oma rakenduse ja seadistame API jaoks põhiruuteri. Pange tähele, et seadsime oma rakenduse pordiks 8080. Vajame seda numbrit oma RESTful API konfigureerimiseks. Nüüd oleme valmis oma API-t testima.

Meie API testimine Postmaniga

Projektikataloogis käivitage järgmine.

node <filename>.js

See käivitab API, kus <filename>on failis määratud package.jsonalgusfail. Seejärel avage oma PC/Maci arvutis Postman ja klõpsake Newparemas ülanurgas nuppu " Request" , seejärel klõpsake nuppu " ". Kui olete seal, peaksite nägema selle kõrval riba, mis ütleb " GET". Siia sisestame oma taotluse URL-i. Lihtsalt sisestage päringu URL-i jaotisesse järgmine ja klõpsake nuppu " Send".

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

Näete " 'API is online'".

API marsruudid

Marsruutide haldamiseks kasutame Express ruuterit. Kui te ei tea, mis ruuter on, on see sisuliselt see, kuidas rakenduse lõpp-punktid vastavad kliendi päringutele. Siin on marsruudid, mille me näiteks loome:

  • /api/numbers - Näitab kõiki numbreid vahemikus 1-10.

  • /api/letters - Näitab kõiki AZ-i tähti.

Nüüd seadistame oma esimese marsruudi vahevara struktuuri, nagu nii.

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

Selles näites loome olukorra, kus kasutaja saab GET-meetodit kasutades taotleda arvu + 1 summat, esitades selle sõnavormi. Kasutame router.route()funktsiooni, et osutada sellele, millisele numbrile tahame selle tulemusel tagasi saata. Parameetrite nimeks on " :" nende ees. Nendele parameetritele pääseme juurde req.params.

Siin on näide tähtedega.

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

Kasutame sama meetodit nagu ülal, kuid saadame kirja tagasi suurtähtedega.

Sissejuhatus NGINX-i

NGINX on tuntud avatud lähtekoodiga tarkvara, mida kasutatakse veebiteenindamiseks, pöördpuhverserveriteks, voogesituseks ja muuks. Kasutame NGINX-i oma API puhverserveri ümberpööramiseks, et saaksime seda pordis käivitada 80, sest Node.js ei luba ühendusi alla 1024 portides ilma juurjuurdepääsuta. See võib olla kasulik domeeni ja serveri linkimisel.

NGINX-i seadistamine

NGINX-i installimise alustamiseks peate oma terminalis käivitama järgmise ja ootama installimise lõpuleviimist.

sudo apt-get install nginx

Järgmisena tahame luua oma saidifaili, mida NGINX kasutab meie rakenduse puhverserveri tagasipööramiseks.

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

Täitke fail järgmisega ja seejärel salvestamiseks CTRL+ O.

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

Kasutades sama porti, millel oma rakendust varem käitasime, käsime Nginxil suunata kõik meie pordi IP-aadressilt päringud meie pordis 80töötavale API-le 8080.

Järgmisena lubage pöördpuhverserver, sidudes meie vastloodud faili sites-availablekaustaga:

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

See tagab, et NGINX muudab meie API puhverserveri ümber.

Esimene käitamine NGINX-iga

Kui oleme NGINX-i konfigureerimise lõpetanud, käivitame NGINX-i ja seejärel API. Esiteks taaskäivitage NGINX.

sudo systemctl restart nginx

Seejärel minge tagasi oma API kataloogi ja käivitage see.

node <filename>.js

Rakendus töötab pordis 80. Käivitage lihtsalt Postmaniga test ülalt, et veenduda, et kõik töötab korralikult.

Meie API tööshoidmine

Tootmiskeskkonnas soovite veenduda, et teil on oma Node rakenduste jaoks protsessihaldur, et need töötaksid igavesti taustal. Selles õpetuses kasutame protsessihaldurit nimega PM2 (Process Manager 2), mis on Node.js-i rakenduste protsessihaldur, mis hoiab need minimaalse seisakuajaga igavesti elus. PM2-ga on kaasas palju kasulikke haldustööriistu, nagu peatamine, uuesti laadimine, peatamine ja palju muud. PM2 installimiseks tippige järgmine tekst ja oodake, kuni see installitakse.

sudo npm install pm2 -g

Kui see on installitud, peate vaid veenduma, et olete projekti kataloogis, tippige järgmine tekst ja rakendus käivitub.

pm2 start <filename>.js

Meie rakenduse haldamine PM2-ga

Nagu varem mainitud, on PM2-l mõned kasulikud tööriistad, mida saate oma rakenduse paremaks haldamiseks kasutada.

  • pm2 stop- Nagu nimigi ütleb, võimaldab see peatada praegu töötava rakenduse ja lõpetada selle protsessi. Kui teie rakendus annab ootamatu tulemuse, on selle peatamine kasulik.

  • pm2 list- Loendi funktsioon võimaldab näha kõiki praegu PM2 kaudu töötavaid rakendusi, mis on kaardistatud nende nimede järgi. Kui teil on vaja kiiresti oma rakenduse tööaega kontrollida, peaksite kasutama seda tööriista.

  • pm2 restart- Kui teie rakendus mingil põhjusel hangub ja soovite selle uuesti laadida, teeb pm2 restart just seda. See lõpetab taotlemisprotsessi ja alustab seda uuesti, teises protsessis.

  • pm2 monit- PM2 sisseehitatud monitori tööriist võimaldab teil kasutajasõbralikus ncurses-stiilis graafikus vaadata oma rakenduse spetsiifiliste detailide graafikut, näiteks protsessori/RAM-i kasutust. See on kasulik, kui soovite oma rakenduse laadimisest visuaalset pilti.

Lõpumärkused

Oleme nüüd lõpetanud oma ülesande luua RESTful API, kasutades Node.js, Expressi ja pöördpuhverserverit NGINX-iga. Täiendage seda õpetust julgelt. Saate oma uue API-ga teha palju suurepäraseid asju, näiteks lisada autentimismeetodeid, andmebaasi, paremat marsruudi- ja veakäsitlust ning palju-palju muud. Kui teil on domeen, mille A-kirje on teie IP-aadressile juba seadistatud, pääsete oma API-le juurde oma domeenist. Kui soovite saidi Express.js kohta lisateavet, külastage nende veebisaiti aadressil http://expressjs.com . NGINX-i ja pöördpuhverserveri kohta lisateabe saamiseks külastage aadressi http://nginx.com . PM2 kohta lisateabe saamiseks külastage nende lehte aadressil http://pm2.keymetrics.io .


Seadistage Cacti Debian Jessies

Seadistage Cacti Debian Jessies

Sissejuhatus Cacti on avatud lähtekoodiga seire- ja graafikutööriist, mis põhineb täielikult RRD andmetel. Cacti kaudu saate jälgida peaaegu igat tüüpi seadmeid

Installige Lets Encrypt SSL ühe klõpsuga WordPressi rakendusse

Installige Lets Encrypt SSL ühe klõpsuga WordPressi rakendusse

Sissejuhatus Lets Encrypt on sertifikaatide väljastamise teenus, mis pakub tasuta TLS/SSL-sertifikaate. Paigaldusprotsessi lihtsustab Certbot,

Tekkiti klassikalise serveri seadistamine Ubuntu 16.10-s

Tekkiti klassikalise serveri seadistamine Ubuntu 16.10-s

Kas kasutate teistsugust süsteemi? Mis on Tekkit Classic? Tekkit Classic on modifikatsioonipakett mängule, mida kõik teavad ja armastavad; Minecraft. See sisaldab mõningaid ver

Seadistage iRedMail Debian Wheezys

Seadistage iRedMail Debian Wheezys

Kas kasutate teistsugust süsteemi? See õpetus näitab teile, kuidas installida grupitöö iRedMail Debian Wheezy värskele installile. Peaksite kasutama servi

Jekylli ajaveebi loomine Ubuntus 16.04

Jekylli ajaveebi loomine Ubuntus 16.04

Kas kasutate teistsugust süsteemi? Jekyll on suurepärane alternatiiv WordPressile ajaveebi pidamiseks või sisu jagamiseks. See ei nõua andmebaase ja see on väga lihtne

Järelevalveta versiooniuuenduste seadistamine Debian 9-s (venitamine)

Järelevalveta versiooniuuenduste seadistamine Debian 9-s (venitamine)

Kas kasutate teistsugust süsteemi? Kui ostate Debiani serveri, peaksid teil alati olema uusimad turvapaigad ja värskendused, olenemata sellest, kas magate või mitte

PHP 7.0 või PHP 7.1 installimine ja konfigureerimine Ubuntu 16.04-s

PHP 7.0 või PHP 7.1 installimine ja konfigureerimine Ubuntu 16.04-s

PHP ja sellega seotud paketid on veebiserveri juurutamisel kõige sagedamini kasutatavad komponendid. Selles artiklis õpime, kuidas seadistada PHP 7.0 või PHP 7.1 o

Kuidas installida CentOS-i Squid Proxy

Kuidas installida CentOS-i Squid Proxy

Squid on populaarne tasuta Linuxi programm, mis võimaldab teil luua edastamise veebipuhverserveri. Selles juhendis näete, kuidas installida Squid CentOS-i, et teid pöörata

Lighttpd (LLMP Stack) installimine CentOS 6-sse

Lighttpd (LLMP Stack) installimine CentOS 6-sse

Sissejuhatus Lighttpd on Apache'i hark, mille eesmärk on olla palju vähem ressursimahukas. See on kerge, sellest ka oma nimi, ja seda on üsna lihtne kasutada. Installin

Kolm tasuta serveri juhtpaneeli (kiire installimine)

Kolm tasuta serveri juhtpaneeli (kiire installimine)

1. Virtualmin/Webmin Virtualmin on võimas ja paindlik veebimajutuse juhtpaneel Linuxi ja UNIX süsteemidele, mis põhineb tuntud avatud lähtekoodiga veebibaasil

Yii rakenduse seadistamine Ubuntu 14.04-s

Yii rakenduse seadistamine Ubuntu 14.04-s

Yii on PHP raamistik, mis võimaldab teil rakendusi kiiremini ja lihtsamalt arendada. Yii installimine Ubuntule on lihtne, nagu saate täpselt teada

Ekraani kasutamine Ubuntu 14.04-s

Ekraani kasutamine Ubuntu 14.04-s

Ekraan on rakendus, mis võimaldab ühes aknas mitut terminaliseanssi kasutada. See võimaldab simuleerida mitut terminali akent, kus see ma

Seadistage Debianis/Ubuntus oma DNS-server

Seadistage Debianis/Ubuntus oma DNS-server

See õpetus selgitab, kuidas seadistada DNS-serverit Bind9 abil Debianis või Ubuntus. Asendage kogu artikli vältel oma-domeen-nimi.com vastavalt. Kell th

Logrotate kasutamine logifailide haldamiseks

Logrotate kasutamine logifailide haldamiseks

Sissejuhatus Logrotate on Linuxi utiliit, mis lihtsustab logifailide haldamist. Tavaliselt töötab see kord päevas cron-töö kaudu ja haldab logibaasi

Staatilise võrgu ja IPv6 konfigureerimine CentOS 7-s

Staatilise võrgu ja IPv6 konfigureerimine CentOS 7-s

VULTR on hiljuti teinud nende osas muudatusi ja kõik peaks nüüd töötama hästi, kui NetworkManager on lubatud. Kui soovite keelata

Icinga2 muutmine, et kasutada CentOS 6 või CentOS 7 põhi-/kliendimudelit

Icinga2 muutmine, et kasutada CentOS 6 või CentOS 7 põhi-/kliendimudelit

Icinga2 on võimas seiresüsteem ja kui seda kasutatakse põhikliendi mudelis, võib see asendada vajaduse NRPE-põhiste seirekontrollide järele. Meister-klient

Seadistage Red5 Media Server versioonis Ubuntu 16.04

Seadistage Red5 Media Server versioonis Ubuntu 16.04

Kas kasutate teistsugust süsteemi? Red5 on Java-s realiseeritud avatud lähtekoodiga meediumiserver, mis võimaldab käivitada mitme kasutajaga Flashi rakendusi, näiteks otseülekandeid.

Kompileerige ja installige Nginx mooduliga PageSpeed ​​Debian 8

Kompileerige ja installige Nginx mooduliga PageSpeed ​​Debian 8

Selles artiklis näeme, kuidas kompileerida ja installida Nginxi põhiliini ametlikest Nginxi allikatest mooduliga PageSpeed, mis võimaldab teil

Apache Cassandra 3.11.x installimine Ubuntu 16.04 LTS-i

Apache Cassandra 3.11.x installimine Ubuntu 16.04 LTS-i

Kas kasutate teistsugust süsteemi? Apache Cassandra on tasuta ja avatud lähtekoodiga NoSQL-i andmebaasihaldussüsteem, mis on loodud pakkuma skaleeritavust, hig.

Apache Cassandra 3.11.x installimine opsüsteemi CentOS 7

Apache Cassandra 3.11.x installimine opsüsteemi CentOS 7

Kas kasutate teistsugust süsteemi? Apache Cassandra on tasuta ja avatud lähtekoodiga NoSQL-i andmebaasihaldussüsteem, mis on loodud pakkuma skaleeritavust, hig.

Masinate tõus: AI tegelikud rakendused

Masinate tõus: AI tegelikud rakendused

Tehisintellekt ei ole tulevik, see on siin, olevikus. Sellest blogist loe, kuidas tehisintellekti rakendused on mõjutanud erinevaid sektoreid.

DDOS-i rünnakud: lühike ülevaade

DDOS-i rünnakud: lühike ülevaade

Kas olete ka DDOS-i rünnakute ohver ja olete segaduses ennetusmeetodite osas? Oma päringute lahendamiseks lugege seda artiklit.

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Kas olete kunagi mõelnud, kuidas häkkerid raha teenivad?

Võib-olla olete kuulnud, et häkkerid teenivad palju raha, kuid kas olete kunagi mõelnud, kuidas nad sellist raha teenivad? arutleme.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Googlei revolutsioonilised leiutised, mis muudavad teie elu lihtsaks.

Kas soovite näha Google'i revolutsioonilisi leiutisi ja seda, kuidas need leiutised muutsid iga inimese elu tänapäeval? Seejärel lugege ajaveebi, et näha Google'i leiutisi.

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Reede oluline osa: mis juhtus tehisintellektiga juhitavate autodega?

Isejuhtivate autode kontseptsioon tehisintellekti abil teedele jõudmiseks on meil juba mõnda aega unistus. Kuid vaatamata mitmele lubadusele pole neid kusagil näha. Lisateabe saamiseks lugege seda ajaveebi…

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Tehnoloogiline singulaarsus: inimtsivilisatsiooni kauge tulevik?

Kuna teadus areneb kiiresti, võttes üle suure osa meie jõupingutustest, suureneb ka oht, et allume seletamatule singulaarsusele. Loe, mida singulaarsus meie jaoks tähendada võiks.

Andmesalvestuse areng – infograafik

Andmesalvestuse areng – infograafik

Andmete säilitamise meetodid on arenenud alates andmete sünnist. See ajaveeb käsitleb infograafiku alusel andmete salvestamise arengut.

Suurandmete viitearhitektuuri kihtide funktsioonid

Suurandmete viitearhitektuuri kihtide funktsioonid

Lugege ajaveebi, et kõige lihtsamal viisil teada saada Big Data Architecture'i erinevaid kihte ja nende funktsioone.

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

6 hämmastavat eelist nutikate koduseadmete olemasolust meie elus

Selles digipõhises maailmas on nutikad koduseadmed muutunud elu oluliseks osaks. Siin on mõned nutikate koduseadmete hämmastavad eelised, mis muudavad meie elu elamisväärseks ja lihtsamaks.

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

macOS Catalina 10.15.4 täienduse värskendus põhjustab rohkem probleeme kui lahendamine

Hiljuti andis Apple välja macOS Catalina 10.15.4 täiendusvärskenduse probleemide lahendamiseks, kuid tundub, et värskendus põhjustab rohkem probleeme, mille tulemuseks on Maci masinate tellimine. Lisateabe saamiseks lugege seda artiklit