Tutorial > Creare una Web App con Node.js e Redis su Ubuntu 20.04

Creare una Web App con Node.js e Redis su Ubuntu 20.04

Pubblicato il: 07 luglio 2020

Node.js Redis Sviluppo Ubuntu

Nel seguente tutorial vedremo come realizzare le basi di una Web App utilizzando Node.js in unione con Redis. Il datastore Redis viene largamente utilizzato come database per caching, nonché per gestire applicazioni che richiedono scambio di messaggi in tempo reale.

La nostra applicazione di esempio risponderà a delle chiamate REST, permettendo al client il salvataggio e la lettura di un archivio di libri.

Utilizzeremo Express come web framework per la gestione delle richieste HTTP, mentre Redis ci permetterà di salvare le informazione permanentemente su disco.

Per iniziare dovrai connetterti al tuo server Ubuntu 20.04 tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Installazione di Redis

Prima di procedere, aggiorna la repository dei pacchetti tramite il seguente comando:

sudo apt update

Procedi quindi installando il pacchetto “redis-server”:

sudo apt install redis-server -y

Per testare l'installazione e imparare le prime istruzioni Redis, collegati al database attraverso il comando:

redis-cli

Il primo comando da imparare è il SET: tale comando ti permette di impostare il valore di una chiave all’interno del database il maniera permanente.

Utilizza quindi il comando per assegnare alla chiave “testKey” il valore “hello world”:

SET testKey “hello world”

Le chiavi Redis ti permettono di memorizzare qualsiasi tipo di dato tra cui stringhe, numeri oppure sequenze binarie come immagini e file. É importante sapere tuttavia che la dimensione massima di una chiave Redis non può superare i 512 Mb.

Per ottenere il valore attuale di una chiave Redis puoi utilizzare il comando GET seguito dal nome della chiave:

GET testKey
“hello world”

Un’altra istruzione che può tornare molto utile è la INCR: che ti permette di incrementare l'attuale chiave di un'unità come mostrato sotto.

SET testKey 100
INCR testKey

Rileggendo il valore di testKey, la chiave ti restituirà 101:

GET testKey
101

Puoi quindi procedere ad eliminare la chiave utilizzata per questi test utilizzando l'istruzione DEL:

DEL testKey

Adesso puoi terminare la sessione tramite il comando QUIT.

Installazione di Node.js e npm

Prima di procedere è necessario installare Node.js e il gestore dei pacchetti npm attraverso il seguente comando:

sudo apt install nodejs npm -y

Per creare un’applicazione compatibile con gli standard previsti da Node.js, devi prima di tutto inizializzare una configurazione base di npm.

Crea quindi una cartella per il progetto (in questo esempio la chiameremo "books") e spostati al suo interno.

mkdir books
cd books

Avvia il seguente comando da console dentro la cartella appena creata:

npm init

Si avvierà una procedura guidata per la creazione di un file package.json, che conterrà tutte le informazione di base sul progetto e le sue dipendenze.

Utilizza i valori suggeriti per andare avanti, come sotto indicato:

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install ` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (books)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to package.json:

{
  "name": "books",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

Is this OK? (yes) yes

Rispondi in modo affermativo per completare la procedura.

Prosegui quindi installando i due moduli principali:

npm install --save express ioredis

Aggiungendo il parametro --save , indichi a npm di aggiornare package.json, aggiungendo queste due dipendenze al progetto.

Creazione dell'applicazione Express

A questo punto puoi procedere con l'impostazione del punto di ingresso per la tua applicazione Express, creando il file index.js nella stessa directory di package.json.

Utilizza il tuo editor di testo preferito per incollare il seguente contenuto nel file appena creato:

/**
 * Per prima cosa, includiamo i due moduli installati
 * precedentemente
 */
var express = require('express');
var Redis = require( 'ioredis' );

const redis = new Redis();

/**
 * Inizializziamo una nuova applicazione express
 */
var app = express();

/**
 * Utilizziamo al root principale del server per
 * elencare tutti i libri presenti
 */
app.get('/', function (req, res) {

    redis.lrange( "books" , 0, -1 ).then( rows => {

        /**
         * Inviamo tutte le righe trovate nella tabella "books"
         */

        res.send( rows );
    });

});

/**
 * Invece per il salvataggio utilizzeremo il percorso
 * /save/ seguito dal titolo e dall'autore
 */
app.get('/save/:title/:author', function (req, res) {

    /**
     * Prepariamo i dati in formato oggetto
     */
    var data = { title: req.params.title, author: req.params.author };

    /**
     * Ed inseriamo l’oggetto in formato testo in una lista “books”
     */

    redis.lpush( "books" , JSON.stringify( data ) ).then( () => {
        res.send(true);
    });

});

/**
 * Avviamo quindi il server in ascolto sulla porta 8001
 */

app.listen( 8001 , function () {
    console.log('Books server ready');
});

A questo punto puoi avviare il server tramite il comando:

node index.js

Attraverso il tuo browser preferito, visita il seguente URL, assicurandoti di cambiare l’indirizzo IP con quello del tuo server e di utilizzare la porta 8001:

http://IP_DEL_SERVER:8001/

Se tutto funziona correttamente la tua Web App ti risponderà con:

[]

Utilizza quindi il browser per salvare i primi 3 libri visitando i seguenti url:

http://IP_DEL_SERVER:8001/save/Il%20Decamerone/Giovanni%20Boccaccio

http://IP_DEL_SERVER:8001/save/Il%20fu%20Mattia%20Pascal/Luigi%20Pirandello

http://IP_DEL_SERVER:8001/save/Il%20barone%20rampante/Italo%20Calvino

N.B. Ricordati di sostituire sempre l’indirizzo "IP_DEL_SERVER" con quello del tuo server.

Assicurati quindi che i libri siano stati salvati navigando verso l'URL utilizzato in precedenza:

http://IP_DEL_SERVER:8001/

Il server dovrebbe rispondere con il seguente contenuto:

[{"title":"Il Decamerone","author":"Giovanni Boccaccio"},{"title":"Il fu Mattia Pascal","author":"Luigi Pirandello"},{"title":"Il barone rampante","author":"Italo Calvino"}]

Se così fosse, vorrà dire che avrai seguito correttamente tutte le istruzioni e creato la tua prima Web App funzionante con Node.js e Redis. L'applicazione appena creata risponderà alle chiamate REST, permettendo il salvataggio e la lettura di un archivio di libri.