Kā izveidot Node.js RESTful API, izmantojot Express.js operētājsistēmā Ubuntu 16.04 LTS

Šajā apmācībā jūs uzzināsit, kā iestatīt pilnīgu RESTful API, kas apkalpos HTTP pieprasījumus, izmantojot Node.js un Express, vienlaikus veicot apgriezto starpniekserveri, izmantojot NGINX, Ubuntu 16.04 LTS. Mēs izmantosim lietojumprogrammu Pastnieks, ļoti labi zināms API izstrādes rīks, lai pārbaudītu mūsu API un pārliecinātos, ka tā ir pilnībā funkcionāla un darbojas pareizi. Node.js ir ātrs, vairāku platformu JavaScript ietvars, kura pamatā ir Chrome V8 dzinējs. To izmanto gan darbvirsmas, gan serveru lietojumprogrammās, un tas ir slavens ar viena pavediena notikumu cilpas apstrādi. Mēs izmantosim Node.js kā aizmugursistēmu mūsu RESTful API, kas ir komplektā ar Express.js — mūsu tīmekļa lietojumprogrammu ietvaru, kas izveidots Node.js. Express.js tiek izlaists kā bezmaksas un atvērta programmatūra. Express ir servera puses, rakstīts JavaScript, un ir paredzēts API veidošanai, tāpēc tas ir lieliski piemērots mūsu projektam. No otras puses, Postman ir ļoti jaudīgs HTTP klients, ņemot vērā API attīstību. Tajā ir visi rīki, kurus jūs varētu vēlēties API izstrādei.

Pastnieka instalēšana

Pirmkārt, jūs vēlaties doties uz Postman vietni un lejupielādēt un instalēt Postman galvenajam datoram (nevis jūsu serverim). Visas instalēšanas instrukcijas būs viņu vietnē.

Node.js instalēšana

Lai sāktu, mums vispirms būs jāinstalē Node.js, lai mēs varētu sākt izstrādāt mūsu API. Mēs lejupielādēsim un instalēsim Node.js no oficiālās vietnes.

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

Turklāt vēlēsities paķert arī nepieciešamos veidošanas rīkus, kas noderēs moduļu apkopošanā.

sudo apt-get install build-essential

Šajā apmācībā mēs izmantosim Node.js LTS versiju, kas ir versija 8.9.3.

Notiek projekta Node.js inicializācija

Mums būs jāinicializē jauns Node.js projekts, kurā būs lietojumprogramma. Lai to izdarītu, izveidojiet jaunu direktoriju.

 mkdir expressapi 

Mainiet uz jauno direktoriju. Kad esat iekšā, palaidiet npm initun izpildiet visas nepieciešamās uzvednes. Ņemiet vērā savas lietojumprogrammas "ieejas punktu": šo failu izveidosit vēlāk. Kad esat pabeidzis, jūs redzēsiet package.jsonfailu pašreizējā direktorijā. Tas darbojas kā mūsu projekta apraksts, un tajā ir uzskaitītas visas funkcionēšanai nepieciešamās atkarības.

Express.js iestatīšana

Tagad mēs konfigurēsim Express.js un tā atkarības.

npm install express

Sāksies instalēšanas process. Paies dažas minūtes, līdz viss tiks lejupielādēts.

Sākam mūsu galveno failu

Tālāk mēs izveidosim mūsu API galveno sākuma failu. Šeit jūs izmantosit package.jsonfailā redzēto "ieejas punktu" . Šīs apmācības nolūkos es izmantošu noklusējuma nosaukumu shēmu index.js.

touch index.js

Pēc tam atveriet to nano teksta redaktorā.

nano index.js

Mūsu galvenajā failā mēs vispirms vēlamies izsaukt visas mūsu galvenās pakotnes un reģistrēt savus maršrutus.

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

Būtībā tas, ko mēs šeit darām, ir mūsu lietotnes inicializācija un pamata maršrutētāja iestatīšana mūsu API. Ņemiet vērā, ka mēs iestatījām mūsu lietojumprogrammas portu uz 8080. Šis numurs mums būs nepieciešams, kad konfigurēsim mūsu RESTful API. Tagad mēs esam gatavi iet uz priekšu un pārbaudīt mūsu API.

Mūsu API testēšana ar Postman

Projekta direktorijā izpildiet tālāk norādīto.

node <filename>.js

Tas sāks API, kur <filename>atrodas failā norādītais sākuma package.jsonfails. Pēc tam savā datorā/Mac datorā atveriet Postman un Newaugšējā labajā stūrī noklikšķiniet uz pogas " Request" , pēc tam noklikšķiniet uz " ". Atrodoties tur, jums vajadzētu redzēt joslu ar uzrakstu " GET" blakus tai. Šeit mēs ievadīsim mūsu pieprasījuma URL. Vienkārši ievadiet tālāk norādīto pieprasījuma URL sadaļā un noklikšķiniet uz " Send".

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

Jūs redzēsit " 'API is online'".

API maršruti

Lai apstrādātu maršrutus, mēs izmantosim Express maršrutētāju. Ja nezināt, kas ir maršrutētājs, būtībā tas ir tas, kā lietojumprogrammu galapunkti reaģē uz klientu pieprasījumiem. Šeit ir norādīti maršruti, kurus mēs izveidosim kā piemēru:

  • /api/numbers - Parāda visus skaitļus no 1 līdz 10.

  • /api/letters - Parāda visus burtus no AZ.

Tagad mēs izveidosim savu pirmo maršruta starpprogrammatūras struktūru, piemēram, tā.

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

Šajā piemērā mēs izveidojām situāciju, kurā lietotājs var pieprasīt skaitļa + 1 summu, norādot tā vārda formu, izmantojot GET metodi. Mēs izmantojam router.route()funkciju, lai norādītu uz numuru, kuru mēs vēlamies nosūtīt atpakaļ. Parametri ir nosaukti ar " :" pirms tiem. Mēs piekļūstam šiem parametriem, izmantojot req.params.

Šeit ir piemērs ar burtiem.

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

Mēs izmantojam to pašu metodi, kas norādīta iepriekš, taču mēs nosūtām vēstuli atpakaļ ar lielo burtu.

Ievads NGINX

NGINX ir plaši pazīstama atvērtā pirmkoda programmatūra, ko izmanto tīmekļa apkalpošanai, reversajiem starpniekserveriem, straumēšanai un citam. Mēs izmantosim NGINX, lai mainītu mūsu API starpniekserveri, lai mēs varētu to palaist portā 80, jo Node.js neļauj izveidot savienojumus portos, kas ir mazāki par 1024 bez root piekļuves. Tas var noderēt, saistot domēnu ar serveri.

Notiek NGINX iestatīšana

Lai sāktu NGINX instalēšanu, terminālī būs jāpalaiž tālāk norādītā darbība un jāgaida, līdz instalēšana tiks pabeigta.

sudo apt-get install nginx

Tālāk mēs vēlēsimies izveidot mūsu vietnes failu, ko NGINX izmantos, lai mainītu mūsu lietotnes starpniekserveri.

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

Aizpildiet failu ar tālāk norādīto, pēc tam — CTRL+, Olai to saglabātu.

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

Izmantojot to pašu portu, kurā mēs palaidām savu lietojumprogrammu iepriekš, mēs sakām Nginx novirzīt visus pieprasījumus no mūsu IP adreses portā 80uz mūsu API, kas darbojas portā 8080.

Pēc tam iespējojiet apgriezto starpniekserveri, simsaitijot mūsu jaunizveidoto failu ar sites-availablemapi:

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

Tas nodrošinās, ka NGINX mainīs mūsu API starpniekserveri.

Pirmā palaišana ar NGINX

Kad būsim pabeiguši NGINX konfigurāciju, mēs startēsim NGINX, pēc tam sāksim mūsu API. Pirmkārt, restartējiet NGINX.

sudo systemctl restart nginx

Pēc tam atgriezieties savā API direktorijā un sāciet to.

node <filename>.js

Lietojumprogramma darbosies portā 80. Vienkārši palaidiet testu no augšas ar Postman, lai pārliecinātos, ka viss darbojas pareizi.

Mūsu API darbības uzturēšana

Ražošanas vidē vēlaties pārliecināties, vai jūsu Node lietojumprogrammām ir procesa pārvaldnieks, lai nodrošinātu, ka tās pastāvīgi darbojas fonā. Šajā apmācībā mēs izmantosim procesu pārvaldnieku ar nosaukumu PM2 (Process Manager 2), kas ir procesa pārvaldnieks Node.js lietojumprogrammām, kas nodrošinās to darbību mūžīgi ar minimālu dīkstāves laiku. PM2 ir aprīkots ar daudziem noderīgiem pārvaldības rīkiem, piemēram, apturēšanu, atkārtotu ielādi, pauzi un citiem. Lai instalētu PM2, ierakstiet tālāk norādīto un gaidiet, līdz tas tiek instalēts.

sudo npm install pm2 -g

Kad tā ir instalēta, jums tikai jāpārliecinās, ka atrodaties projekta direktorijā, ierakstiet tālāk norādīto, un lietojumprogramma tiks startēta.

pm2 start <filename>.js

Mūsu lietojumprogrammas pārvaldība ar PM2

Kā minēts iepriekš, PM2 ir daži noderīgi rīki, kurus varat izmantot, lai labāk pārvaldītu savu lietojumprogrammu.

  • pm2 stop- Kā norāda nosaukums, tas ļauj apturēt pašlaik darbojošos lietojumprogrammu un apturēt tās procesu. Ja jūsu lietojumprogramma rada negaidītu rezultātu, noderēs tās apturēšana.

  • pm2 list- Saraksta funkcija ļauj skatīt visas pašlaik darbojošās lietojumprogrammas, izmantojot PM2, kartētas pēc to nosaukumiem. Ja vēlaties ātri pārbaudīt lietojumprogrammas darbības laiku, izmantojiet šo rīku.

  • pm2 restart- Ja jūsu lietojumprogramma kāda iemesla dēļ sasalst un vēlaties to atkārtoti ielādēt, pm2 restart to dara. Tas apturēs pieteikšanās procesu un atsāks to no jauna, izmantojot citu procesu.

  • pm2 monit- PM2 iebūvētais monitora rīks ļauj skatīt diagrammu ar jūsu lietojumprogrammas specifiskajām detaļām, piemēram, CPU/RAM lietojumu, lietotājam draudzīgā ncurses stila diagrammā. Tas ir noderīgi, ja vēlaties vizuālu priekšstatu par jūsu lietojumprogrammas slodzi.

Nobeiguma piezīmes

Mēs esam pabeiguši savu uzdevumu izveidot RESTful API, izmantojot Node.js, Express un apgriezto starpniekserveri, izmantojot NGINX. Jūtieties brīvi paplašināt šo apmācību. Izmantojot jauno API, varat paveikt daudzas lieliskas lietas, piemēram, pievienot autentifikācijas metodes, datubāzi, labāku maršrutu un kļūdu apstrādi un daudz ko citu. Ja jums ir domēns ar “A” ierakstu, kas jau ir iestatīts jūsu IP adresē, varēsit piekļūt savai API no sava domēna. Ja vēlaties uzzināt vairāk par Express.js, apmeklējiet viņu vietni http://expressjs.com . Lai uzzinātu vairāk par NGINX un apgriezto starpniekserveri, apmeklējiet vietni http://nginx.com . Lai uzzinātu vairāk par PM2, apmeklējiet viņu lapu http://pm2.keymetrics.io .


Statiskā tīkla un IPv6 konfigurēšana operētājsistēmā CentOS 7

Statiskā tīkla un IPv6 konfigurēšana operētājsistēmā CentOS 7

VULTR nesen veica izmaiņas, un tagad visam vajadzētu darboties labi, ja ir iespējots NetworkManager. Ja vēlaties atspējot

Docker CE instalēšana Ubuntu 16.04

Docker CE instalēšana Ubuntu 16.04

Vai izmantojat citu sistēmu? Docker ir lietojumprogramma, kas ļauj izvietot programmas, kas tiek darbinātas kā konteineri. Tas tika uzrakstīts populārajā Go programmā

Netīrās govs eksploīta ielāgošana vietnē CentOS

Netīrās govs eksploīta ielāgošana vietnē CentOS

Kas ir netīrā govs (CVE-2016-5195)? Netīrās govs ievainojamība tiek izmantota, izmantojot to, kā Linux apstrādā kodu. Tas ļauj nepievilinātam lietotājam gai

Iestatiet laika joslu un NTP operētājsistēmā Ubuntu 14.04

Iestatiet laika joslu un NTP operētājsistēmā Ubuntu 14.04

Vultr serveri var nebūt izvietoti ar jūsu serverī nepieciešamo laika joslu/datumu/laiku. Par laimi mēs varam manuāli iestatīt laika joslu, lai novērstu problēmas

Rust instalēšana Ubuntu 14.04

Rust instalēšana Ubuntu 14.04

Rust, plaši pazīstama kā Rust-Lang, ir sistēmas programmēšanas valoda, ko izstrādā Mozilla un atbalsta LLVM. Rūsa ir pazīstama ar programmu novēršanu

Kā instalēt osTicket uz FreeBSD 12

Kā instalēt osTicket uz FreeBSD 12

Vai izmantojat citu sistēmu? osTicket ir atvērtā koda klientu atbalsta biļešu sistēma. osTicket pirmkods ir publiski mitināts vietnē Github. Šajā apmācībā

Darbs ar Linux iespējām

Darbs ar Linux iespējām

Ievads Linux iespējas ir īpaši atribūti Linux kodolā, kas piešķir procesiem un binārajiem izpildāmajiem failiem īpašas privilēģijas, kas ir normālas.

Kā instalēt JuliaLang Ubuntu 17.04

Kā instalēt JuliaLang Ubuntu 17.04

Julia, plaši pazīstama kā JuliaLang, ir programmēšanas valoda skaitliskajai skaitļošanai. Džūlija ir tikpat ātra kā C, taču tas neupurē lasāmību

Augsta pieejamība, izmantojot privāto tīklu Ubuntu 16.04 ar Keepalived

Augsta pieejamība, izmantojot privāto tīklu Ubuntu 16.04 ar Keepalived

Dažām augstas pieejamības arhitektūrām nepieciešama peldoša IP adrese. Šī funkcionalitāte ir pieejama Vultr platformā, tiklīdz ir izveidots privātais tīkls

Iestatiet tikai SFTP lietotāju kontus Ubuntu 14

Iestatiet tikai SFTP lietotāju kontus Ubuntu 14

Ievads Dažos gadījumos ir nepieciešams izveidot lietotājus ar lasīšanas un rakstīšanas piekļuvi vienam direktorijam, tikai izmantojot FTP. Šis raksts jums parādīs, kā t

Kā iestatīt Node.js pastāvīgās lietojumprogrammas Ubuntu 16.04

Kā iestatīt Node.js pastāvīgās lietojumprogrammas Ubuntu 16.04

Node.js lietojumprogrammas ir populāras to mērogošanas spējas dēļ. Vairāku vienlaicīgu procesu palaišana vairākos serveros nodrošina mazāku latentumu un ilgāku darbības laiku

Kā instalēt SuiteCRM operētājsistēmā Ubuntu 16.04

Kā instalēt SuiteCRM operētājsistēmā Ubuntu 16.04

SuiteCRM ir bezmaksas atvērtā koda alternatīva populārajai klientu attiecību pārvaldības (CRM) sistēmai SugarCRM. Tas kļuva populārs, kad SugarCRM nolēma

Kā instalēt Open Eshop operētājsistēmā Ubuntu 16.04

Kā instalēt Open Eshop operētājsistēmā Ubuntu 16.04

Open Eshop ir bezmaksas atvērtā koda e-komercijas programmatūra digitālo preču, piemēram, MP3, e-grāmatu, filmu, programmatūras un daudz ko citu, pārdošanai. Šajā apmācībā mēs vēlēsimies

Instalējiet NixOS vietnē Vultr

Instalējiet NixOS vietnē Vultr

NixOS ir tīri funkcionāls Linux izplatīšana. To var atrast vietnē nixos.org. Galvenais NixOS izmantošanas iemesls ir tas, ka tas ir pilnībā deklaratīvs, kas padara

Instalējiet Nginx + PHP FPM + Caching + MySQL Ubuntu 12.04

Instalējiet Nginx + PHP FPM + Caching + MySQL Ubuntu 12.04

Iespējams, daudzi cilvēki izmantos savus Vultr VPS kā tīmekļa serverus, laba izvēle būtu Nginx kā tīmekļa serveris. Šajā tēmā es aprakstīšu o

Hosts faila izmantošana vietņu pārbaudei

Hosts faila izmantošana vietņu pārbaudei

Hosts fails ir īpašs fails jūsu darbstacijas datorā, kurā tiks saglabāta IP un nosaukuma informācija. Šis fails tiek pārbaudīts pirms DNS, tādēļ, ja ievietojat a

Kā instalēt Xubuntu darbvirsmu Vultr serveros, izmantojot Ubuntu 15.10

Kā instalēt Xubuntu darbvirsmu Vultr serveros, izmantojot Ubuntu 15.10

Xubuntu ir XFCE + Ubuntu! XFCE ir viegla Ubuntu GUI/darbvirsma. Vultr serveriem ir nepieciešamas papildu atkarības, kas pēc noklusējuma nav instalētas

Iestatīšana ļauj šifrēt ar Lighttpd Ubuntu 16.04

Iestatīšana ļauj šifrēt ar Lighttpd Ubuntu 16.04

Ievads Let's Encrypt ir sertifikācijas iestāde (CA), kas izsniedz bezmaksas SSL/TLS sertifikātus. Lighttpd ir viegls tīmekļa serveris, kas darbojas uz lo

Apache optimizācija zemas klases VPS operētājsistēmā Ubuntu 14.04

Apache optimizācija zemas klases VPS operētājsistēmā Ubuntu 14.04

Apache ir ļoti viegli instalēt un inicializēt, taču tas ir aprīkots ar daudziem iepriekš instalētiem moduļiem, kā rezultātā, palaižot, var rasties veiktspējas problēmas.

Kā novērst vienlaicīgus savienojumus operētājsistēmā Linux, izmantojot IPTables

Kā novērst vienlaicīgus savienojumus operētājsistēmā Linux, izmantojot IPTables

iptables ir ugunsmūra programmatūra, ko var atrast daudzos izplatījumos, tostarp CentOS un Ubuntu. Šajā dokumentā jūs redzēsit, kā jūs varat novērst vienlaicīgumu

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mašīnu pieaugums: AI reālās pasaules lietojumi

Mākslīgais intelekts nav nākotnē, tas ir šeit, tagadnē. Šajā emuārā lasiet, kā mākslīgā intelekta lietojumprogrammas ir ietekmējušas dažādas nozares.

DDOS uzbrukumi: īss pārskats

DDOS uzbrukumi: īss pārskats

Vai arī jūs esat DDOS uzbrukumu upuris un esat neizpratnē par profilakses metodēm? Izlasiet šo rakstu, lai atrisinātu savus jautājumus.

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Vai esat kādreiz domājis, kā hakeri pelna naudu?

Iespējams, esat dzirdējuši, ka hakeri pelna daudz naudas, bet vai esat kādreiz domājuši, kā viņi nopelna šādu naudu? pārrunāsim.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Google revolucionāri izgudrojumi, kas atvieglos jūsu dzīvi.

Vai vēlaties redzēt revolucionārus Google izgudrojumus un to, kā šie izgudrojumi mainīja katra cilvēka dzīvi mūsdienās? Pēc tam lasiet emuārā, lai redzētu Google izgudrojumus.

Piektdiena: kas notika ar AI vadītām automašīnām?

Piektdiena: kas notika ar AI vadītām automašīnām?

Pašpiedziņas automobiļu koncepcija izbraukt uz ceļiem ar mākslīgā intelekta palīdzību ir mūsu sapnis jau kādu laiku. Bet, neskatoties uz vairākiem solījumiem, tie nekur nav redzami. Lasiet šo emuāru, lai uzzinātu vairāk…

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Tehnoloģiskā singularitāte: cilvēces civilizācijas tāla nākotne?

Zinātnei strauji attīstoties, pārņemot lielu daļu mūsu pūļu, palielinās arī risks pakļaut sevi neizskaidrojamai singularitātei. Izlasiet, ko singularitāte varētu nozīmēt mums.

Datu glabāšanas evolūcija – infografika

Datu glabāšanas evolūcija – infografika

Datu uzglabāšanas metodes ir attīstījušās kopš datu dzimšanas. Šajā emuārā ir aprakstīta datu uzglabāšanas attīstība, pamatojoties uz infografiku.

Lielo datu atsauces arhitektūras slāņu funkcijas

Lielo datu atsauces arhitektūras slāņu funkcijas

Lasiet emuāru, lai vienkāršākā veidā uzzinātu dažādus lielo datu arhitektūras slāņus un to funkcijas.

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

6 brīnišķīgas priekšrocības, ko sniedz viedo mājas ierīču izmantošana mūsu dzīvē

Šajā digitālajā pasaulē viedās mājas ierīces ir kļuvušas par būtisku dzīves sastāvdaļu. Šeit ir daži pārsteidzoši viedo mājas ierīču ieguvumi, lai padarītu mūsu dzīvi dzīves vērtu un vienkāršāku.

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

MacOS Catalina 10.15.4 papildinājuma atjauninājums rada vairāk problēmu nekā to risināšana

Nesen Apple izlaida macOS Catalina 10.15.4 papildinājuma atjauninājumu, lai novērstu problēmas, taču šķiet, ka atjauninājums rada vairāk problēmu, kas izraisa Mac datoru bloķēšanu. Izlasiet šo rakstu, lai uzzinātu vairāk