Kaip sukurti Node.js RESTful API naudojant Express.js Ubuntu 16.04 LTS

Šiame vadove sužinosite, kaip Ubuntu 16.04 LTS nustatyti visą RESTful API, kuri aptarnaus HTTP užklausas naudojant Node.js ir Express, o atvirkštinis tarpinis serveris naudojamas naudojant NGINX. Mes naudosime programą, pavadintą Postman, labai gerai žinomas API kūrimo įrankis, skirtas išbandyti mūsų API ir įsitikinti, kad ji visiškai veikia ir tinkamai veikia. Node.js yra greita kelių platformų „JavaScript“ sistema, pagrįsta „Chrome“ V8 varikliu. Jis naudojamas tiek darbalaukio, tiek serverio programose ir garsėja vienos gijos įvykių ciklo apdorojimu. Naudosime Node.js kaip savo RESTful API užpakalinę programą, susietą su Express.js, mūsų žiniatinklio programų sistema, sukurta Node.js. Express.js išleidžiama kaip nemokama ir atvira programinė įranga. „Express“ yra serverio pusėje, parašyta „JavaScript“ ir skirta kurti API, todėl puikiai tinka mūsų projektui. Kita vertus, „Postman“ yra labai galingas HTTP klientas, turintis omenyje API plėtrą. Jame yra visi įrankiai, kurių galbūt norėsite kurdami API.

Įdiegti paštininką

Pirmiausia norite pereiti į „ Postman“ svetainę ir atsisiųsti bei įdiegti „Postman“ pagrindiniame kompiuteryje (ne serveryje). Visos diegimo instrukcijos bus pateiktos jų svetainėje.

Node.js diegimas

Norėdami pradėti, pirmiausia turėsime įdiegti Node.js, kad galėtume pradėti kurti savo API. Atsisiųsime ir įdiegsime Node.js iš oficialios svetainės.

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

Be to, taip pat norėsite paimti reikalingus kūrimo įrankius, kurie bus naudingi kuriant modulius.

sudo apt-get install build-essential

Šioje mokymo programoje naudosime LTS Node.js versiją, kuri yra 8.9.3 versija.

Inicijuojamas mūsų Node.js projektas

Turėsime inicijuoti naują Node.js projektą, kuriame bus programa. Norėdami tai padaryti, sukurkite naują katalogą.

 mkdir expressapi 

Pakeiskite į naują katalogą. Įėję į vidų, paleiskite npm initir užpildykite visus reikiamus raginimus. Atkreipkite dėmesį į savo programos „įvesties tašką“: šį failą sukursite vėliau. Kai baigsite, package.jsondabartiniame kataloge pamatysite failą. Jis veikia kaip mūsų projekto aprašymas ir išvardija visas priklausomybes, reikalingas veikimui.

„Express.js“ nustatymas

Dabar sukonfigūruosime Express.js ir jo priklausomybes.

npm install express

Diegimo procesas prasidės. Prireiks kelių minučių, kol viskas bus atsiųsta.

Pradedame pagrindinį failą

Tada sukursime pagrindinį API pradinį failą. Čia jūs naudosite „įvesties tašką“, kurį matėte package.jsonfaile. Šios pamokos sumetimais naudosiu numatytąją pavadinimo schemą index.js.

touch index.js

Tada atidarykite jį nano teksto rengyklėje.

nano index.js

Pagrindiniame faile pirmiausia norime iškviesti visus pagrindinius paketus ir užregistruoti 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);

Iš esmės tai, ką mes darome, yra programos inicijavimas ir pagrindinio API maršruto parinktuvo nustatymas. Atminkite, kad mes nustatėme savo programos prievadą į 8080. Šio numerio mums prireiks, kai sukonfigūruosime RESTful API. Dabar esame pasirengę eiti į priekį ir išbandyti savo API.

Testuojame API su „Postman“.

Projekto kataloge paleiskite šiuos veiksmus.

node <filename>.js

Bus paleista API, kur <filename>yra pradinis failas, kurį nurodėte package.jsonfaile. Tada savo asmeniniame / „Mac“ kompiuteryje atidarykite „Postman“ ir spustelėkite Newmygtuką „ “ viršutiniame dešiniajame kampe, tada spustelėkite „ Request“. Kai ten, turėtumėte pamatyti juostą su užrašu „ GET“. Čia įvesime savo užklausos URL. Tiesiog įveskite toliau pateiktą užklausos URL skiltyje ir spustelėkite „ Send“.

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

Pamatysite " 'API is online'".

API maršrutai

Norėdami valdyti maršrutus, naudosime Express maršrutizatorių. Jei nežinote, kas yra maršrutizatorius, tai iš esmės tai, kaip programos galiniai taškai reaguoja į kliento užklausas. Štai maršrutai, kuriuos nustatysime kaip pavyzdį:

  • /api/numbers - Rodo visus skaičius nuo 1 iki 10.

  • /api/letters - Rodo visas raides iš AZ.

Dabar mes sukursime savo pirmąją maršruto tarpinės programinės įrangos struktūrą, panašiai.

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

Šiame pavyzdyje nustatome situaciją, kai vartotojas gali prašyti skaičiaus + 1 sumos, pateikdamas jo žodžio formą, naudodamas GET metodą. Mes naudojame router.route()funkciją taško iki kokiu numeriu norime siųsti atgal, kaip rezultatas. Parametrai įvardijami su " :" priešais juos. Šiuos parametrus (-us) pasiekiame per req.params.

Štai pavyzdys su raidėmis.

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

Naudojame tą patį metodą, kaip aprašyta aukščiau, bet laišką siunčiame atgal, rašytą didžiosiomis raidėmis.

Įvadas į NGINX

NGINX yra gerai žinoma atvirojo kodo programinė įranga, naudojama žiniatinklio aptarnavimui, atvirkštiniams tarpiniams serveriams, srautiniam perdavimui ir kt. Naudosime NGINX, kad pakeistume tarpinį savo API tarpinį serverį, kad galėtume jį paleisti per prievadą 80, nes Node.js neleidžia prisijungti prie mažesnių nei 1024 prievadų be root prieigos. Tai gali būti naudinga susiejant domeną su serveriu.

NGINX nustatymas

Norėdami pradėti diegti NGINX, savo terminale turėsite paleisti šiuos veiksmus ir palaukti, kol diegimas bus baigtas.

sudo apt-get install nginx

Tada norėsime sukurti savo svetainės failą, kurį NGINX naudos, kad pakeistų mūsų programos tarpinį serverį.

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

Užpildykite failą toliau nurodytais žodžiais, tada CTRL+, Okad jį išsaugotumėte.

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

Naudodami tą patį prievadą, kuriame anksčiau paleidome programą, liepiame Nginx nukreipti visas užklausas iš mūsų IP adreso prievade 80į mūsų API, veikiančią prievade 8080.

Tada įgalinkite atvirkštinį tarpinį serverį, susiedami mūsų naujai sukurtą failą su sites-availableaplanku:

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

Tai užtikrins, kad NGINX pakeis mūsų API tarpinį serverį.

Pirmas paleidimas su NGINX

Kai baigsime NGINX konfigūraciją, paleisime NGINX, tada paleisime API. Pirmiausia iš naujo paleiskite NGINX.

sudo systemctl restart nginx

Tada grįžkite į savo API katalogą ir paleiskite jį.

node <filename>.js

Programa veiks uoste 80. Tiesiog paleiskite testą iš viršaus naudodami Postman, kad įsitikintumėte, jog viskas veikia tinkamai.

Kad mūsų API veiktų

Gamybos aplinkoje norite įsitikinti, kad turite savo Node taikomųjų programų procesų tvarkyklę, kad jos amžinai veiktų fone. Šioje pamokoje mes naudosime procesų tvarkyklę, vadinamą PM2 (Process Manager 2), kuri yra Node.js programų procesų tvarkyklė, kuri išliks jas amžinai su minimaliomis prastovomis. PM2 yra su daug naudingų valdymo įrankių, tokių kaip sustabdymas, įkėlimas iš naujo, pristabdymas ir kt. Norėdami įdiegti PM2, įveskite toliau pateiktą informaciją ir palaukite, kol jis bus įdiegtas.

sudo npm install pm2 -g

Įdiegę tereikia įsitikinti, kad esate projekto kataloge, įveskite toliau pateiktą informaciją ir programa bus paleista.

pm2 start <filename>.js

Programos tvarkymas naudojant PM2

Kaip minėta anksčiau, PM2 turi keletą naudingų įrankių, kuriuos galite naudoti norėdami geriau valdyti programą.

  • pm2 stop- Kaip rodo pavadinimas, tai leidžia sustabdyti šiuo metu veikiančią programą ir sustabdyti jos procesą. Jei jūsų programa duoda netikėtų rezultatų, ją sustabdyti bus naudinga.

  • pm2 list- Sąrašo funkcija leidžia matyti visas šiuo metu veikiančias programas per PM2, susietas pagal jų pavadinimus. Jei reikia greitai patikrinti programos veikimo laiką, naudokite šį įrankį.

  • pm2 restart- Jei jūsų programa dėl kokios nors priežasties užstringa ir norėtumėte ją įkelti iš naujo, pm2 restart tai padarys. Tai nutrauks paraiškos teikimo procesą ir pradės jį iš naujo pagal kitą procesą.

  • pm2 monit- PM2 integruotas monitoriaus įrankis leidžia peržiūrėti konkrečių jūsų programos detalių, pvz., procesoriaus / RAM naudojimo, grafiką patogioje ncurses stiliaus diagramoje. Tai naudinga, jei norite vaizdinio savo programos įkėlimo vaizdo.

Baigiamosios pastabos

Dabar baigėme savo užduotį sukurti RESTful API, naudodami Node.js, Express ir atvirkštinį tarpinį serverį naudodami NGINX. Nedvejodami praplėskite šią mokymo programą. Naudodami naują API galite padaryti daug puikių dalykų, pvz., pridėti autentifikavimo metodus, duomenų bazę, geresnį maršruto ir klaidų tvarkymą ir daug daugiau. Jei turite domeną, kurio „A“ įrašas jau nustatytas jūsų IP adresu, galėsite pasiekti API iš savo domeno. Jei norite sužinoti daugiau apie Express.js, apsilankykite jų svetainėje adresu http://expressjs.com . Norėdami sužinoti daugiau apie NGINX ir atvirkštinį tarpinį serverį, apsilankykite http://nginx.com . Norėdami sužinoti daugiau apie PM2, apsilankykite jų puslapyje adresu http://pm2.keymetrics.io .


Įdiekite „Plesk“ „CentOS 7“.

Įdiekite „Plesk“ „CentOS 7“.

Naudojate kitą sistemą? Plesk yra patentuotas žiniatinklio prieglobos valdymo skydelis, leidžiantis vartotojams administruoti savo asmenines ir (arba) klientų svetaines, duomenų bazes

Nustatykite „Cacti“ naudodami „Debian Jessie“.

Nustatykite „Cacti“ naudodami „Debian Jessie“.

Įvadas Cacti yra atvirojo kodo stebėjimo ir grafikų sudarymo įrankis, visiškai pagrįstas RRD duomenimis. Naudodami „Cacti“ galite stebėti beveik bet kokio tipo įrenginius

Įdiekite „Lets Encrypt SSL“ „WordPress“ programoje vienu spustelėjimu

Įdiekite „Lets Encrypt SSL“ „WordPress“ programoje vienu spustelėjimu

Įvadas „Lets Encrypt“ yra sertifikatų išdavimo tarnyba, siūlanti nemokamus TLS/SSL sertifikatus. Diegimo procesą supaprastina Certbot,

Kaip nustatyti „Tekkit Classic“ serverį „Ubuntu 16.10“.

Kaip nustatyti „Tekkit Classic“ serverį „Ubuntu 16.10“.

Naudojate kitą sistemą? Kas yra Tekkit Classic? „Tekkit Classic“ yra visų žinomo ir mėgstamo žaidimo modifikacijų paketas; Minecraft. Jame yra keletas ver

„Debian Wheezy“ nustatykite „iRedMail“.

„Debian Wheezy“ nustatykite „iRedMail“.

Naudojate kitą sistemą? Ši pamoka parodys, kaip įdiegti grupinę programinę įrangą iRedMail naujai įdiegus Debian Wheezy. Turėtumėte naudoti tarnavimą

Jekyll tinklaraščio kūrimas Ubuntu 16.04

Jekyll tinklaraščio kūrimas Ubuntu 16.04

Naudojate kitą sistemą? „Jekyll“ yra puiki „WordPress“ alternatyva dienoraščių rašymui ar turinio dalijimuisi. Tam nereikia jokių duomenų bazių ir tai labai paprasta

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Kaip įdiegti „Squid“ tarpinį serverį „CentOS“.

Squid yra populiari nemokama „Linux“ programa, leidžianti sukurti persiuntimo žiniatinklio tarpinį serverį. Šiame vadove pamatysite, kaip įdiegti „Squid“ „CentOS“, kad paverstumėte jus

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Kaip įdiegti „Lighttpd“ (LLMP Stack) „CentOS 6“.

Įvadas Lighttpd yra „Apache“ šakutė, skirta daug mažiau išteklių imti. Jis yra lengvas, todėl jo pavadinimas ir yra gana paprastas naudoti. Įdiegti

Trys nemokami serverio valdymo skydeliai (greitasis diegimas)

Trys nemokami serverio valdymo skydeliai (greitasis diegimas)

1. Virtualmin/Webmin Virtualmin yra galingas ir lankstus interneto prieglobos valdymo skydelis, skirtas Linux ir UNIX sistemoms, pagrįstas gerai žinoma atvirojo kodo žiniatinklio baze

Yii programos nustatymas Ubuntu 14.04

Yii programos nustatymas Ubuntu 14.04

Yii yra PHP sistema, leidžianti greičiau ir lengviau kurti programas. „Yii“ įdiegimas „Ubuntu“ yra nesudėtingas, nes sužinosite tiksliai

Ekrano naudojimas Ubuntu 14.04

Ekrano naudojimas Ubuntu 14.04

Ekranas yra programa, leidžianti kelis kartus naudoti terminalo seansus viename lange. Tai leidžia imituoti kelis terminalo langus, kur tai ma

Logrotate naudojimas žurnalo failams tvarkyti

Logrotate naudojimas žurnalo failams tvarkyti

Įvadas Logrotate yra „Linux“ programa, supaprastinanti žurnalo failų administravimą. Paprastai jis veikia kartą per dieną per cron darbą ir tvarko žurnalų bazę

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

Statinio tinklo ir IPv6 konfigūravimas CentOS 7

VULTR neseniai atliko pakeitimus, ir dabar viskas turėtų veikti gerai, kai įjungta „NetworkManager“. Jei norite išjungti

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

„Icinga2“ modifikavimas, kad būtų naudojamas pagrindinis / kliento modelis „CentOS 6“ arba „CentOS 7“.

Icinga2 yra galinga stebėjimo sistema, o kai naudojama pagrindinio kliento modelyje, ji gali pakeisti NRPE pagrįstų stebėjimo patikrų poreikį. Meistras-klientas

Kaip įdiegti Apache Cassandra 3.11.x Ubuntu 16.04 LTS

Kaip įdiegti Apache Cassandra 3.11.x Ubuntu 16.04 LTS

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Kaip įdiegti „Apache Cassandra 3.11.x“ „CentOS 7“.

Naudojate kitą sistemą? Apache Cassandra yra nemokama ir atviro kodo NoSQL duomenų bazių valdymo sistema, skirta užtikrinti mastelio keitimą, hig.

Kaip įdiegti MODX Revolution Ubuntu 16.04 LAMP VPS

Kaip įdiegti MODX Revolution Ubuntu 16.04 LAMP VPS

Naudojate kitą sistemą? MODX Revolution yra greita, lanksti, keičiamo dydžio, nemokama ir atviro kodo, įmonės lygio turinio valdymo sistema (TVS), parašyta i.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Kaip įdiegti „Mattermost 4.1“ „CentOS 7“.

Naudojate kitą sistemą? Mattermost yra atvirojo kodo, savarankiškai priglobta alternatyva Slack SAAS pranešimų paslaugai. Kitaip tariant, naudodami Mattermost, jūs apytiksliai

Kaip įdiegti MODX Revolution FreeBSD 11 FAMP VPS

Kaip įdiegti MODX Revolution FreeBSD 11 FAMP VPS

Naudojate kitą sistemą? MODX Revolution yra greita, lanksti, keičiamo dydžio atvirojo kodo, įmonės lygio turinio valdymo sistema (TVS), parašyta PHP. Tai i

Leidžia šifruoti Plesk

Leidžia šifruoti Plesk

„Plesk“ valdymo skydelyje yra labai graži „Lets Encrypt“ integracija. „Lets Encrypt“ yra vienas iš vienintelių SSL teikėjų, išduodančių visus sertifikatus

Mašinų augimas: AI pritaikymas realiame pasaulyje

Mašinų augimas: AI pritaikymas realiame pasaulyje

Dirbtinis intelektas nėra ateityje, jis čia, dabartyje Šiame tinklaraštyje Skaitykite, kaip dirbtinio intelekto programos paveikė įvairius sektorius.

DDOS atakos: trumpa apžvalga

DDOS atakos: trumpa apžvalga

Ar taip pat esate DDOS atakų auka ir esate sumišęs dėl prevencijos metodų? Perskaitykite šį straipsnį, kad išspręstumėte savo užklausas.

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Ar kada nors susimąstėte, kaip įsilaužėliai uždirba pinigų?

Galbūt girdėjote, kad įsilaužėliai uždirba daug pinigų, bet ar kada susimąstėte, kaip jie uždirba tokius pinigus? padiskutuokime.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Revoliuciniai „Google“ išradimai, kurie palengvins jūsų gyvenimą.

Ar norite pamatyti revoliucinius „Google“ išradimus ir kaip šie išradimai pakeitė kiekvieno žmogaus gyvenimą šiandien? Tada skaitykite tinklaraštį, kad pamatytumėte „Google“ išradimus.

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Penktadienio esminiai dalykai: kas atsitiko AI varomiems automobiliams?

Savavaledžių automobilių koncepcija, kuri išvažiuotų į kelius su dirbtinio intelekto pagalba, yra svajonė, kurią jau kurį laiką svajojame. Tačiau nepaisant kelių pažadų, jų niekur nematyti. Skaitykite šį tinklaraštį, kad sužinotumėte daugiau…

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Technologinis išskirtinumas: tolima žmogaus civilizacijos ateitis?

Kadangi mokslas sparčiai vystosi, perimdamas daug mūsų pastangų, taip pat didėja rizika, kad pateksime į nepaaiškinamą singuliarumą. Skaitykite, ką mums gali reikšti išskirtinumas.

Duomenų saugojimo raida – infografika

Duomenų saugojimo raida – infografika

Duomenų saugojimo metodai gali būti tobulinami nuo pat Duomenų gimimo. Šiame tinklaraštyje, remiantis infografika, aprašoma duomenų saugojimo raida.

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Didžiųjų duomenų atskaitos architektūros sluoksnių funkcijos

Skaitykite tinklaraštį, kad paprasčiausiai sužinotumėte apie skirtingus didžiųjų duomenų architektūros sluoksnius ir jų funkcijas.

6 nuostabūs išmaniųjų namų įrenginių privalumai

6 nuostabūs išmaniųjų namų įrenginių privalumai

Šiame skaitmeniniu būdu pagrįstame pasaulyje išmanieji namų įrenginiai tapo svarbia gyvenimo dalimi. Štai keletas nuostabių išmaniųjų namų įrenginių privalumų, kaip jie daro mūsų gyvenimą vertą gyventi ir paprastesnį.

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

„macOS Catalina 10.15.4“ priedo atnaujinimas kelia daugiau problemų, nei sprendžia

Neseniai „Apple“ išleido „macOS Catalina 10.15.4“ priedą, skirtą problemoms išspręsti, tačiau atrodo, kad dėl atnaujinimo kyla daugiau problemų, dėl kurių „Mac“ įrenginiai blokuojami. Norėdami sužinoti daugiau, perskaitykite šį straipsnį