Node.js RESTful API létrehozása Express.js használatával Ubuntu 16.04 LTS-en

Ebből az oktatóanyagból megtudhatja, hogyan állíthat be egy teljes RESTful API-t, amely a HTTP-kéréseket Node.js és Express használatával szolgálja ki, miközben fordított proxyt NGINX-szel Ubuntu 16.04 LTS-en. A Postman nevű alkalmazást fogjuk használni, egy nagyon jól ismert API-fejlesztő eszköz, amellyel tesztelhetjük API-nkat, és megbizonyosodhatunk arról, hogy teljesen működőképes és megfelelően működik. A Node.js egy gyors, többplatformos JavaScript-keretrendszer, amely a Chrome V8-as motorján alapul. Asztali és szerveralkalmazásokban egyaránt használják, és híres egyszálú eseményhurok kezeléséről. A Node.js-t fogjuk használni a RESTful API háttérprogramjaként, amely a Node.js-hez épített webalkalmazás-keretrendszerünk, az Express.js-szel van csomagolva. Az Express.js ingyenes és nyílt szoftverként jelenik meg. Az Express szerveroldali, JavaScriptben íródott, és API-k építésére készült, így tökéletes a projektünkhöz. Másrészt a Postman egy nagyon erős HTTP-kliens, az API-fejlesztést szem előtt tartva. Az API-fejlesztéshez szükséges összes eszközt tartalmazza.

Postman telepítése

Először is fel kell lépnie a Postman webhelyére , és letöltenie és telepítenie kell a Postman-t a fő számítógépére (nem a szerverére). Minden telepítési utasítás megtalálható a weboldalukon.

A Node.js telepítése

A kezdéshez először telepítenünk kell a Node.js-t, hogy elkezdhessük az API fejlesztését. A Node.js fájl letöltése és telepítése a hivatalos webhelyről történik.

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

Ezen kívül érdemes megragadni a szükséges összeállítási eszközöket is, amelyek hasznosak lesznek a modulok összeállításában.

sudo apt-get install build-essential

Ebben az oktatóanyagban a Node.js LTS verzióját fogjuk használni, amely a 8.9.3 verzió.

Node.js projektünk inicializálása

Inicializálnunk kell egy új Node.js projektet, amely egy alkalmazást fog tartalmazni. Ehhez hozzon létre egy új könyvtárat.

 mkdir expressapi 

Váltás az új könyvtárra. Miután belépett, futtassa, npm inités töltse ki az összes szükséges utasítást. Jegyezze fel alkalmazása "belépési pontját": ezt a fájlt később hozza létre. Ha végzett, látni fog egy package.jsonfájlt az aktuális könyvtárában. Ez a projekt leírásaként működik, és felsorolja a működéshez szükséges összes függőséget.

Az Express.js beállítása

Most konfiguráljuk az Express.js-t és annak függőségeit.

npm install express

Megkezdődik a telepítési folyamat. Eltart néhány percig, amíg minden befejeződik a letöltéssel.

A fő fájl elindítása

Ezután létrehozzuk az API fő kezdőfájlját. Itt fogja használni a package.jsonfájlban látott "belépési pontot" . Az oktatóanyag kedvéért az alapértelmezett elnevezési sémát fogom használni, index.js.

touch index.js

Ezután nyissa meg a nano szövegszerkesztőben.

nano index.js

A fő fájlunkban először meg akarjuk hívni az összes fő csomagunkat, és regisztrálni szeretnénk az útvonalainkat.

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

Alapvetően az alkalmazásunk inicializálása és egy alapvető útválasztó beállítása az API-nkhoz. Vegye figyelembe, hogy az alkalmazásunk portját a következőre állítottuk 8080. Erre a számra a RESTful API konfigurálásakor lesz szükségünk. Most készen állunk az API tesztelésére.

Az API tesztelése a Postman segítségével

A projektkönyvtárban futtassa a következőt.

node <filename>.js

Ezzel elindítja az API-t, ahol <filename>a fájlban megadott package.jsonkezdőfájl található. Ezután nyissa meg a Postmant PC/Mac számítógépén, kattintson a Newjobb felső sarokban található " " gombra, majd kattintson a " Request" gombra . Amikor ott van, egy sávot kell látnia GETmellette a következő felirattal: " ". Ide írjuk be kérésünk URL-jét. Egyszerűen írja be a következőket a kérelem URL szakaszába, majd kattintson a " Send" gombra .

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

A következőt fogja látni: " 'API is online'".

API útvonalak

Az útvonalak kezeléséhez az Express útválasztót fogjuk használni. Ha nem tudja, mi az az útválasztó, akkor ez lényegében az, hogy az alkalmazás végpontjai hogyan reagálnak az ügyfelek kérésére. Íme az útvonalak, amelyeket példaként beállítunk:

  • /api/numbers - Az összes számot megjeleníti 1-től 10-ig.

  • /api/letters - Megjeleníti az AZ összes betűjét.

Most beállítjuk az első útvonal köztes szoftver struktúránkat, hasonlóképpen.

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

Ebben a példában egy olyan helyzetet állítottunk fel, amikor a felhasználó a GET metódussal lekérheti egy szám + 1 összegét a szóalakot megadva. A router.route()függvény segítségével rámutatunk arra a számra, amelyet ennek eredményeként vissza akarunk küldeni. A paraméterek elnevezése :előtt " " van. Ezeket a paramétereket a következőn keresztül érjük el req.params.

Íme egy példa betűkkel.

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

A fenti módszert alkalmazzuk, de a levelet nagybetűvel küldjük vissza.

Bevezetés az NGINX-be

Az NGINX egy jól ismert nyílt forráskódú szoftver, amelyet webszolgáltatásra, fordított proxykra, streamelésre és egyebekre használnak. Az NGINX-et fogjuk használni az API-nk proxyjának megfordításához, hogy lehetővé tegyük a porton való futtatását 80, mivel a Node.js nem engedélyezi a kapcsolatokat 1024-nél kisebb portokon root hozzáférés nélkül. Ez hasznos lehet a domain és a szerver összekapcsolásakor.

Az NGINX beállítása

Az NGINX telepítésének megkezdéséhez futtassa a következőt a terminálon, és várja meg, amíg a telepítés befejeződik.

sudo apt-get install nginx

Ezután létrehozzuk a webhelyfájlunkat, amelyet az NGINX az alkalmazásunk proxyjának visszafordításához fog használni.

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

Töltse ki a fájlt a következővel, majd a mentéséhez a CTRL+ jellel 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;
       }
}

Ugyanazon a porton, amelyen az alkalmazásunkat korábban 80futtattuk , azt mondjuk az Nginxnek, hogy irányítsa át az összes kérést a porton lévő IP-címünkről a porton futó API-ra 8080.

Ezután engedélyezze a fordított proxyt úgy, hogy az újonnan létrehozott fájlunkat szimbolizálja a sites-availablemappával:

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

Ez biztosítja, hogy az NGINX megfordítsa az API-nkat.

Első futtatás NGINX-szel

Miután befejeztük az NGINX konfigurációját, elindítjuk az NGINX-et, majd elindítjuk az API-t. Először indítsa újra az NGINX-et.

sudo systemctl restart nginx

Ezután térjen vissza az API-könyvtárba, és indítsa el.

node <filename>.js

Az alkalmazás a porton fog futni 80. Egyszerűen futtassa le a tesztet felülről a Postman segítségével, hogy megbizonyosodjon arról, hogy minden megfelelően működik.

Az API működésének fenntartása

Éles környezetben győződjön meg arról, hogy rendelkezik egy folyamatkezelővel a csomópont-alkalmazásokhoz, hogy azok örökké a háttérben futhassanak. Ebben az oktatóanyagban a PM2 (Process Manager 2) nevű folyamatkezelőt fogjuk használni, amely a Node.js alkalmazások folyamatkezelője, amely minimális állásidővel örökre életben tartja azokat. A PM2 számos hasznos felügyeleti eszközzel érkezik, mint például a leállítás, újratöltés, szüneteltetés stb. A PM2 telepítéséhez írja be a következőt, és várja meg a telepítést.

sudo npm install pm2 -g

A telepítés után nem kell mást tennie, mint megbizonyosodni arról, hogy a projektkönyvtárban van, írja be a következőket, és az alkalmazás elindul.

pm2 start <filename>.js

Alkalmazásunk kezelése PM2-vel

Amint azt korábban említettük, a PM2 rendelkezik néhány hasznos eszközzel, amelyek segítségével jobban kezelheti az alkalmazást.

  • pm2 stop- Ahogy a neve is sugallja, ez lehetővé teszi az éppen futó alkalmazás leállítását és folyamatának leállítását. Ha az alkalmazás váratlan eredményt hoz, akkor hasznos lesz a leállítása.

  • pm2 list- A lista funkció lehetővé teszi az összes jelenleg futó alkalmazás megtekintését a PM2-n keresztül, a nevükkel leképezve. Ha gyorsan szeretné ellenőrizni az alkalmazás üzemidejét, használja ezt az eszközt.

  • pm2 restart- Ha az alkalmazás valamilyen okból lefagy, és újra szeretné tölteni, a pm2 restart pontosan ezt teszi. Leállítja a jelentkezési folyamatot, és újrakezdi, egy másik folyamat alatt.

  • pm2 monit- A PM2 beépített monitoreszköze lehetővé teszi, hogy egy felhasználóbarát ncurses-stílusú grafikonon megtekintse az alkalmazás konkrét részleteit, például a CPU/RAM-használatot. Ez akkor hasznos, ha vizuális képet szeretne az alkalmazás betöltődéséről.

Záró megjegyzések

Mostanra befejeztük azt a feladatunkat, hogy létrehozunk egy RESTful API-t Node.js, Express használatával, és fordított proxyt az NGINX-szel. Nyugodtan bővítse ki ezt az oktatóanyagot. Az új API-val sok nagyszerű dolgot tehet, például hitelesítési módszereket, adatbázist, jobb útvonal- és hibakezelést és még sok minden mást. Ha van olyan domainje, amelyben már be van állítva egy „A” rekord az Ön IP-címéhez, akkor a domainjéből hozzáférhet API-jához. Ha többet szeretne megtudni az Express.js-ről, látogassa meg webhelyüket a http://expressjs.com címen . Ha többet szeretne megtudni az NGINX-ről és a fordított proxyról, látogasson el a http://nginx.com webhelyre . Ha többet szeretne megtudni a PM2-ről, látogassa meg oldalukat a http://pm2.keymetrics.io címen .


Telepítse a Plesket a CentOS 7 rendszeren

Telepítse a Plesket a CentOS 7 rendszeren

Más rendszert használ? A Plesk egy szabadalmaztatott webtárhely-vezérlőpult, amely lehetővé teszi a felhasználók számára, hogy adminisztrálják személyes és/vagy ügyfeleik webhelyeit, adatbázisait

A Cacti beállítása a Debian Jessie-n

A Cacti beállítása a Debian Jessie-n

Bevezetés A Cacti egy nyílt forráskódú megfigyelő és grafikus eszköz, amely teljes mértékben az RRD adatokon alapul. A Cactuson keresztül szinte bármilyen típusú eszközt felügyelhet

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Telepítse a Lets Encrypt SSL-t az egykattintásos WordPress alkalmazásban

Bevezetés A Lets Encrypt egy hitelesítésszolgáltató szolgáltatás, amely ingyenes TLS/SSL-tanúsítványokat kínál. A telepítés folyamatát a Certbot leegyszerűsíti,

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Tekkit Classic kiszolgáló beállítása Ubuntu 16.10 rendszeren

Más rendszert használ? Mi az a Tekkit Classic? A Tekkit Classic egy modpack ahhoz a játékhoz, amelyet mindenki ismer és szeret; Minecraft. Tartalmaz néhányat a ver

Az iRedMail beállítása a Debian Wheezy rendszeren

Az iRedMail beállítása a Debian Wheezy rendszeren

Más rendszert használ? Ez az oktatóanyag megmutatja, hogyan telepítheti a csoportmunka iRedMail programot a Debian Wheezy friss telepítésére. Használnia kell egy szervát

Jekyll blog létrehozása Ubuntu 16.04-en

Jekyll blog létrehozása Ubuntu 16.04-en

Más rendszert használ? A Jekyll nagyszerű alternatíva a WordPress helyett blogíráshoz vagy tartalommegosztáshoz. Nem igényel adatbázist, és nagyon egyszerű i

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Felügyelet nélküli frissítések beállítása Debian 9-en (Stretch)

Más rendszert használ? Ha Debian szervert vásárol, akkor mindig rendelkeznie kell a legújabb biztonsági javításokkal és frissítésekkel, akár alszik, akár nem

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP 7.0 vagy PHP 7.1 telepítése és konfigurálása Ubuntu 16.04 rendszeren

A PHP és a kapcsolódó csomagok a leggyakrabban használt összetevők a webszerverek telepítésekor. Ebben a cikkben megtudjuk, hogyan kell beállítani a PHP 7.0 vagy PHP 7.1 o verzióját

A Squid Proxy telepítése a CentOS rendszeren

A Squid Proxy telepítése a CentOS rendszeren

A Squid egy népszerű, ingyenes Linux-program, amely lehetővé teszi továbbítási webproxy létrehozását. Ebben az útmutatóban megtudhatja, hogyan telepítheti a Squid-et a CentOS rendszerre, hogy megfordítsa

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

A Lighttpd (LLMP Stack) telepítése a CentOS 6 rendszeren

Bevezetés A Lighttpd az Apache forkja, amely sokkal kevésbé erőforrás-igényes. Könnyű, innen kapta a nevét, és meglehetősen egyszerű a használata. Telepítés

Három ingyenes szervervezérlő panel (gyors telepítés)

Három ingyenes szervervezérlő panel (gyors telepítés)

1. Virtualmin/Webmin A Virtualmin egy hatékony és rugalmas web hosting vezérlőpanel Linux és UNIX rendszerek számára, amely a jól ismert nyílt forráskódú webbázison alapul.

Yii alkalmazás beállítása Ubuntu 14.04-en

Yii alkalmazás beállítása Ubuntu 14.04-en

A Yii egy PHP-keretrendszer, amely lehetővé teszi alkalmazások gyorsabb és egyszerűbb fejlesztését. A Yii telepítése Ubuntura egyszerű, amint azt pontosan megtudhatja

A képernyő használata Ubuntu 14.04-en

A képernyő használata Ubuntu 14.04-en

A Screen egy olyan alkalmazás, amely lehetővé teszi a terminálmunkamenetek többszöri használatát egy ablakon belül. Ez lehetővé teszi több terminálablak szimulálását, ahol ez ma

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Állítsa be a saját DNS-kiszolgálóját a Debian/Ubuntu rendszeren

Ez az oktatóanyag elmagyarázza, hogyan állíthat be DNS-kiszolgálót a Bind9 használatával Debian vagy Ubuntu rendszeren. A cikkben ennek megfelelően helyettesítse be a saját-domain-neve.com címet. TH-nál

A Logrotate használata naplófájlok kezelésére

A Logrotate használata naplófájlok kezelésére

Bevezetés A Logrotate egy Linux segédprogram, amely leegyszerűsíti a naplófájlok kezelését. Általában naponta egyszer fut egy cron-feladaton keresztül, és kezeli a naplóbázist

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A statikus hálózat és az IPv6 konfigurálása CentOS 7 rendszeren

A VULTR a közelmúltban változtatásokat hajtott végre a saját oldalukon, és most már mindennek jól kell működnie, ha a NetworkManager engedélyezve van. Ha szeretné letiltani

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 módosítása a mester/kliens modell használatához CentOS 6 vagy CentOS 7 rendszeren

Az Icinga2 egy hatékony felügyeleti rendszer, és mester-kliens modellben használva helyettesítheti az NRPE-alapú felügyeleti ellenőrzések szükségességét. A mester-kliens

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

A Red5 Media Server beállítása az Ubuntu 16.04 rendszeren

Más rendszert használ? A Red5 egy Java nyelven megvalósított nyílt forráskódú médiaszerver, amely lehetővé teszi többfelhasználós Flash-alkalmazások, például élő streamin futtatását.

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Fordítsa le és telepítse az Nginx-et a PageSpeed ​​Modul segítségével a Debian 8 rendszeren

Ebben a cikkben látni fogjuk, hogyan fordíthatja le és telepítheti az Nginx fővonalat az Nginx hivatalos forrásaiból a PageSpeed ​​modullal, amely lehetővé teszi a

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Az Apache Cassandra 3.11.x telepítése Ubuntu 16.04 LTS rendszeren

Más rendszert használ? Az Apache Cassandra egy ingyenes és nyílt forráskódú NoSQL adatbázis-kezelő rendszer, amelyet úgy terveztek, hogy biztosítsa a méretezhetőséget,

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A gépek felemelkedése: Az AI valós világbeli alkalmazásai

A mesterséges intelligencia nem a jövőben, hanem itt a jelenben. Ebben a blogban Olvassa el, hogyan hatott a mesterséges intelligencia alkalmazások különböző ágazatokra.

DDOS támadások: Rövid áttekintés

DDOS támadások: Rövid áttekintés

Ön is DDOS támadások áldozata, és tanácstalan a megelőzési módszereket illetően? Olvassa el ezt a cikket a kérdések megoldásához.

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Gondolkozott már azon, hogyan keresnek pénzt a hackerek?

Talán hallottál már arról, hogy a hackerek sok pénzt keresnek, de elgondolkodtál már azon, hogyan kereshetnek ennyi pénzt? beszéljük meg.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

A Google forradalmi találmányai, amelyek megkönnyítik az életét.

Szeretné látni a Google forradalmi találmányait, és azt, hogy ezek a találmányok hogyan változtatták meg minden mai ember életét? Ezután olvassa el a blogot, és nézze meg a Google találmányait.

Essential péntek: Mi történt az AI-vezérelt autókkal?

Essential péntek: Mi történt az AI-vezérelt autókkal?

Az önvezető autók koncepciója, hogy mesterséges intelligencia segítségével kerüljenek az utakra, már egy ideje álmunk. De számos ígéret ellenére sehol sem látszanak. Olvassa el ezt a blogot, hogy többet megtudjon…

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Technológiai szingularitás: az emberi civilizáció távoli jövője?

Ahogy a tudomány gyors ütemben fejlődik, átveszi erőfeszítéseink nagy részét, megnő annak a kockázata is, hogy alávetjük magunkat egy megmagyarázhatatlan szingularitásnak. Olvassa el, mit jelenthet számunkra a szingularitás.

Az adattárolás fejlődése – Infografika

Az adattárolás fejlődése – Infografika

Az adatok tárolási módjai az Adatok születése óta alakulhatnak. Ez a blog egy infografika alapján mutatja be az adattárolás fejlődését.

A Big Data Reference Architecture Layerek funkciói

A Big Data Reference Architecture Layerek funkciói

Olvassa el a blogot, hogy a legegyszerűbb módon ismerje meg a Big Data Architecture különböző rétegeit és azok funkcióit.

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Az okosotthoni eszközök 6 lenyűgöző előnye az életünkben

Ebben a digitálisan vezérelt világban az intelligens otthoni eszközök az élet döntő részévé váltak. Íme az intelligens otthoni eszközök néhány elképesztő előnye, hogyan teszik életünket érdemessé és egyszerűbbé.

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

A macOS Catalina 10.15.4 kiegészítés frissítése több problémát okoz, mint a megoldás

Az Apple a közelmúltban kiadott egy kiegészítést a macOS Catalina 10.15.4-hez a problémák megoldására, de úgy tűnik, hogy a frissítés több problémát okoz, ami a Mac gépek blokkolásához vezet. További információért olvassa el ezt a cikket