Per esemplificare i concetti visti sinora in questa guida, realizziamo un'applicazione di esempio. Creeremo un API server che dia accesso ad un database di proverbi regionali italiani.
Ogni proverbio sarà memorizzato nel servizio strutturato su tre campi:
- proverbio: il testo da memorizzare
- significato: il significato espresso sinteticamente in italiano
- regione: la regione di provenienza.
Il formato con cui le API dialogheranno con i client sarà JSON, pertanto un proverbio sarà espresso nella seguente forma:
{
"proverbio": "'E figlie so' ppiezz' 'e core",
"significato": "I figli sono pezzi di cuore",
"regione": "campania"
}
Tratteremo analogamente oggetti multipli in un'unica risposta e queste comporranno un array di oggetti JSON:
[
{
"proverbio":"Va in piazza e pija consijo, aritorna a casa e ffa come te pare",
"significato":"Ascolta i consigli di tutti ma poi fai come preferisci",
"regione":"lazio"
},
{
"proverbio":"A chi tocca nun se 'ngrugna",
"significato":"Inutile prendersela se capita una sventura, poteva capitare a un altro",
"regione":"lazio"
}
]
Le funzionalità che le API offrono sono indicate nella seguente tabella.
Metodo HTTP | Endpoint | Descrizione |
---|---|---|
GET | / | Offre un messaggio di benvenuto invitando ad utilizzare le API |
GET | /proverbi | Restituisce, in formato JSON, l'elenco completo dei proverbi nel servizio |
GET | /proverbi/:regione | Restituisce, in formato JSON, l'elenco dei proverbi relativi ad una regione. Ad esempio, /proverbi/lazio restituisce l'elenco dei proverbi attribuito alle province del Lazio |
POST | /proverbi | Permette l'inserimento di un nuovo proverbio nel servizio. Un proverbio va fornito come oggetto JSON nel formato indicato in precedenza |
Strumenti che utilizzeremo
Per lo sviluppo abbiamo scelto di utilizzare una piattaforma basata su Node.js e MongoDB. Node.js mette a disposizione in proprio l'Application Server, e noi realizzeremo le funzionalità in ECMAScript/Javascript. MongoDB si occuperà di memorizzare gli oggetti JSON che gli passeremo e, alla struttura vista in precedenza, aggiungerà di suo un ulteriore campo denominato _id contenente l'identificativo univoco dell'elemento. Per esemplificare, la forma finale del primo proverbio (una volta salvato su database MongoDB) somiglierà alla seguente:
{
"_id": "5e96de07380bf01d124a862b",
"proverbio": "'E figlie so' ppiezz' 'e core",
"significato": "I figli sono pezzi di cuore",
"regione": "campania"
}
L'architettura sarà costituita da due nodi, ma della loro impostazione se ne occuperà Jelastic stesso. Non dovremo fare altro che creare un nuovo environment, scegliendo Node.js con integrazione di MongoDB come supporto di persistenza.
La struttura del database in MongoDB sarà basata su un'unica collection: chi fosse abituato al paradigma relazionale può immaginare qualcosa di simile ad un'unica tabella, dove ogni record è occupato da un proverbio. Ogni oggetto nella collection sarà un proverbio, e su di questa verranno svolte le varie operazioni di lettura e modifica.
Come si evince dalla tabella precedente, sono previste quattro operazioni: tre di lettura ed una di modifica, ma solo due delle chiamate GET verranno esperite sul database.
Sviluppo e deploy
Per quanto riguarda sviluppo e deploy, tra le varie opportunità offerte da Jelastic, abbiamo scelto di realizzare l'applicazione in locale e seguire la via dell'upload. Pertanto, dovremo "zippare" il codice in un unico archivio e caricato tramite il nostro account. Il modo in cui va predisposto il pacchetto, e quali file includere, dipende dal linguaggio scelto e dell'applicazione. Nel nostro caso sarà sufficiente includere il file package.json e lo script con il codice: al momento dell'esecuzione del deploy, Jelastic preparerà l'ambiente per noi.
Per la sperimentazione dell'app, si potranno scegliere varie opzioni. Considerando che l'applicazione è costituita da due nodi, potremo sperimentare i loro funzionamenti singolarmente, oppure in modo integrato. Approfondiremo questi aspetti a partire dalla prossima lezione.