In questo tutorial, imparerai come impostare un'API RESTful completa, che servirà le richieste HTTP utilizzando Node.js ed Express mentre inoltra il proxy con NGINX, su Ubuntu 16.04 LTS. Utilizzeremo un'applicazione chiamata Postman, uno strumento di sviluppo API molto noto, per testare la nostra API e assicurarsi che sia perfettamente funzionante e funzioni correttamente. Node.js è un framework JavaScript multipiattaforma veloce basato sul motore V8 di Chrome. È utilizzato in entrambe le applicazioni desktop e server ed è famoso per la gestione di loop di eventi a thread singolo. Useremo Node.js come backend per la nostra API RESTful, in bundle con Express.js, il nostro framework di applicazioni web creato per Node.js. Express.js è rilasciato come software gratuito e aperto. Express è lato server, scritto in JavaScript ed è progettato per la creazione di API, il che lo rende perfetto per il nostro progetto. D'altra parte, Postman è un client HTTP molto potente, con in mente lo sviluppo delle API. Presenta tutti gli strumenti che potresti desiderare per lo sviluppo delle API.
Installazione di Postman
Innanzitutto, vai sul sito Web di Postman e scarica e installa Postman per il tuo PC principale (non per il tuo server). Tutte le istruzioni di installazione saranno sul loro sito Web.
Installazione di Node.js
Per iniziare, dovremo prima installare Node.js in modo da poter iniziare a sviluppare la nostra API. Scaricheremo e installeremo Node.js dal sito ufficiale.
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
Inoltre, vorrai anche prendere gli strumenti di costruzione necessari, che saranno utili nella compilazione di moduli.
sudo apt-get install build-essential
Per questo tutorial, utilizzeremo la versione LTS di Node.js, che è la versione 8.9.3.
Inizializzazione del nostro progetto Node.js
Dovremo inizializzare un nuovo progetto Node.js, che conterrà un'applicazione. Per fare ciò, crea una nuova directory.
mkdir expressapi
Passa alla nuova directory. Una volta dentro, esegui npm init
e completa tutte le istruzioni richieste. Prendi nota del "punto di ingresso" dell'applicazione: creerai questo file in seguito. Al termine, vedrai un package.json
file nella tua directory corrente. Funziona come una descrizione del nostro progetto ed elenca tutte le dipendenze necessarie per funzionare.
Impostazione di Express.js
Ora configureremo Express.js e le sue dipendenze.
npm install express
Inizierà il processo di installazione. Ci vorranno alcuni minuti per completare il download di tutto.
Avvio del nostro file principale
Successivamente, creeremo il nostro file di partenza principale per la nostra API. Qui è dove utilizzerai il "punto di ingresso" che hai visto nel package.json
file. Per il bene di questo tutorial, userò il default schema di denominazione, index.js
.
touch index.js
Quindi, aprilo nell'editor di testo nano.
nano index.js
Nel nostro file principale, vogliamo prima chiamare tutti i nostri pacchetti principali e registrare i nostri percorsi.
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);
Fondamentalmente quello che stiamo facendo qui è inizializzare la nostra app e configurare un router di base per la nostra API. Nota che impostiamo la porta della nostra applicazione su 8080
. Avremo bisogno di questo numero per quando configureremo la nostra API RESTful. Ora siamo pronti per andare avanti e testare la nostra API.
Testare la nostra API con Postman
Nella directory del progetto, eseguire quanto segue.
node <filename>.js
Ciò avvierà l'API, dove si <filename>
trova il file di avvio specificato nel package.json
file. Quindi, apri Postman sul tuo PC / Mac e fai clic sul pulsante " New
" nell'angolo in alto a destra, quindi fai clic su " Request
". Quando sei lì, dovresti vedere una barra che dice " GET
" accanto. Qui inseriremo il nostro URL di richiesta. Basta inserire quanto segue nella sezione URL richiesta e fare clic su " Send
".
`http://your-server-ip:3000/api`
Vedrai " 'API is online'
".
Percorsi API
Per gestire i percorsi, utilizzeremo il router Express. Se non sai cos'è un router, è essenzialmente come gli endpoint dell'applicazione rispondono alle richieste del client. Ecco i percorsi che configureremo come esempio:
Ora imposteremo la nostra struttura middleware per la prima route, in questo modo.
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})
});
In questo esempio, creiamo una situazione in cui un utente può richiedere la somma di un numero + 1 fornendo la forma della parola di esso, usando il metodo GET. Usiamo la router.route()
funzione per indicare quale numero vogliamo restituire come risultato. I parametri sono chiamati con un " :
" davanti a loro. Accediamo a questi parametri tramite req.params
.
Ecco un esempio con le lettere.
router.route('/letters/:letter').get((req, res) => {
res.json({result: req.params.letter.toUpperCase()})
});
Usiamo lo stesso metodo di cui sopra, ma restituiamo la lettera in maiuscolo.
Introduzione a NGINX
NGINX è un noto software open source utilizzato per servizi Web, proxy inversi, streaming e altro. Utilizzeremo NGINX per invertire il proxy della nostra API, per consentirci di eseguirlo sulla porta 80
, perché Node.js non consente connessioni su porte inferiori a 1024 senza accesso root. Questo può tornare utile quando colleghi il tuo dominio al tuo server.
Configurazione di NGINX
Per iniziare l'installazione di NGINX è necessario eseguire quanto segue nel terminale e attendere il completamento dell'installazione.
sudo apt-get install nginx
Successivamente, vorremmo creare il nostro file del sito che NGINX utilizzerà per invertire la nostra app.
sudo nano /etc/nginx/sites-available-api.js
Popolare il file con il seguente, quindi CTRL+ Oper salvarlo.
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;
}
}
Utilizzando la stessa porta su cui abbiamo eseguito la nostra applicazione in precedenza, stiamo dicendo a Nginx di reindirizzare tutte le richieste dal nostro indirizzo IP sulla porta 80
alla nostra API in esecuzione sulla porta 8080
.
Quindi, abilitare il proxy inverso collegando in modo simbolico il nostro file appena creato alla sites-available
cartella:
sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available
Ciò garantirà che NGINX annullerà il proxy della nostra API.
Prima esecuzione con NGINX
Una volta terminata la nostra configurazione NGINX, avvieremo NGINX, quindi avvieremo la nostra API. Innanzitutto, riavvia NGINX.
sudo systemctl restart nginx
Quindi, tornare alla directory API e avviarlo.
node <filename>.js
L'applicazione verrà eseguita sulla porta 80
. Esegui semplicemente il test dall'alto con Postman, per assicurarti che tutto funzioni correttamente.
Mantenere attiva la nostra API
In un ambiente di produzione, si desidera assicurarsi di disporre di un gestore processi per le applicazioni Node, per garantire che rimangano in esecuzione per sempre in background. In questo tutorial, utilizzeremo un gestore di processo chiamato PM2 (Process Manager 2), che è un gestore di processo per le applicazioni Node.js che li manterrà in vita per sempre con tempi di inattività minimi. PM2 viene fornito con molti utili strumenti di gestione, come l'arresto, il ricaricamento, la pausa e altro ancora. Per installare PM2, digitare quanto segue e attendere l'installazione.
sudo npm install pm2 -g
Una volta installato, tutto ciò che devi fare è assicurarti di essere nella directory del progetto, digitare quanto segue e l'applicazione verrà avviata.
pm2 start <filename>.js
Gestire la nostra applicazione con PM2
Come accennato in precedenza, PM2 ha alcuni strumenti utili che è possibile utilizzare per gestire meglio l'applicazione.
-
pm2 stop
- Come suggerisce il nome, ciò consente di interrompere l'applicazione attualmente in esecuzione e di terminarne il processo. Se l'applicazione sta producendo un risultato imprevisto, la sua interruzione tornerà utile.
-
pm2 list
- La funzione elenco consente di visualizzare tutte le applicazioni attualmente in esecuzione tramite PM2, mappate dai loro nomi. Se è necessario controllare rapidamente i tempi di attività dell'applicazione, è necessario utilizzare questo strumento.
-
pm2 restart
- Se la tua applicazione si blocca per qualche motivo e desideri ricaricarla, il riavvio di pm2 fa proprio questo. Ucciderà il processo di applicazione e lo riavvierà, con un processo diverso.
-
pm2 monit
- Lo strumento di monitoraggio integrato di PM2 consente di visualizzare un grafico dei dettagli specifici dell'applicazione, come l'utilizzo della CPU / RAM, in un grafico intuitivo in stile ncurses. Questo è utile se desideri un'immagine visiva del carico della tua applicazione.
Ora abbiamo completato il nostro compito di creare un'API RESTful, utilizzando Node.js, Express e invertire il proxy con NGINX. Sentiti libero di espandere questo tutorial. Puoi fare molte cose fantastiche con la tua nuova API, come aggiungere metodi di autenticazione, un database, una migliore gestione del percorso e degli errori e molto altro ancora. Se hai un dominio, con un record "A" già impostato sul tuo indirizzo IP, sarai in grado di accedere alla tua API dal tuo dominio. Per ulteriori informazioni su Express.js, visitare il sito Web http://expressjs.com . Per ulteriori informazioni su NGINX e il proxy inverso, visitare http://nginx.com . Per ulteriori informazioni su PM2, visitare la loro pagina http://pm2.keymetrics.io .