Creare un servizio RESTful con Node.js e MySQL

Mattepuffo's logo
Creare un servizio RESTful con Node.js e MySQL

Creare un servizio RESTful con Node.js e MySQL

Oggi vediamo come creare un servizio RESTful con Node.js.

Rispetto a tanti altri tutorial, vedremo come usare MySQL invece di MongoDB, e non terremo in considerazione tutta la parte dei template.

In fin dei conti a noi servono solo i dati in formato JSON.

Useremo comunque Express.

Do per scontato l'installazione e un minimo di conoscenza di Node.js; comunque potete guardare a questo breve articolo.

Detto ciò, create una cartella per il progetto (la mia si chiama noderest) e create al suo interno il file package.json:

{
    "name": "rest-api-express-mysql",
    "version": "0.0.1",
    "description": "RESTful con MySQL e Expressjs",
    "main": "express.js",
    "scripts": {
        "start": "node express.js"
    },
    "author": "Mattepuffo",
    "license": "Creative Commons",
    "dependencies": {
        "body-parser": "1.9.2",
        "express": "4.10.1",
        "mysql": "2.9.0",
        "morgan": "1.5.0"
    }
}

Questo file ci permette di gestire le dipendenze del progetto, ed installare ciò che ci serve (lo vedremo più sotto).

Creiamo anche il file express.js, che sarà il cuore della nostra mini app:

var express = require('express');
var mysql = require('mysql');
var bodyParser = require('body-parser');
var logger = require('morgan');
var app = express();
var port = 8080;
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(logger('dev'));

var db = mysql.createConnection({
    host: 'HOST_DB',
    user: 'USER_DB',
    password: 'PWD_DB',
    database: 'NOME_DB'
});

app.get('/', function (request, response, next) {
    db.query('SELECT * FROM my_table', function (err, rows, fields) {
        if (!err) {
            response.status(200).send(rows);
        } else {
            response.status(200).send('Errore di connesione o query!');
        }
    });
});

app.get('/id/:id', function (request, response, next) {
    db.query('SELECT * FROM my_table WHERE table_id = ?', 
[request.params.id], function (err, rows, fields) {
        if (!err) {
            response.status(200).send(rows);
        } else {
            response.status(200).send('Errore di connesione o query!');
        }
    });
});

app.listen(port, function () {
    console.log('Express server inizializzato sulla porta ' + port);
});

All'inizio impostiamo i vari require del progetto:

  • express -> modulo Express
  • mysql -> modulo MySQL
  • body-parser -> un middleware per Epxress, ci permette di mandare JSON in output
  • morgan -> un logger

Più sotto creaimo la connessione con la funzione createConnection, impostando i vari parametri.

Poi abbiamo due routes:

  • la prima interroga tutti i record della tabella
  • la seconda prende i record con l'id passato nell'url

Alla fine abbiamo il listen per avviare la app.

Dopo la teoria, vediamo la pratica.

Dalla directory del progetto, lanciate questo comando:

$ npm install

Questo comando installaerà tutte le dipendenze, leggendo il file package.json.

A questo punto avviamo la app:

$ node express.js

Se è tutto ok, dovreste vedere nel terminale il messaggio impostato nel listen.

Per visualizzare i dati, aprite il browser e impostate l'indirizzo:

  • localhost:8080 -> per tutti i record
  • localhost:8080/id/1 -> per vedere il record con id 1

In entrambi i casi i dati saranno esposti in formato JSON.

Diciamo che usando le dipendenze, ci sgraviamo di un grosso lavoro; e questa è una delle cose migliori di Node.js.

Inoltre, anche se sicuramente da migliorare e completare, abbiamo creato un piccolo servizio REST in pochi minuti.

Enjoy!


Condividi

Commentami!