Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Realizzazione dell'applicazione di esempio

In questa lezione vedremo come scrivere ed usare correttamente il codice per la realizzazione di un'applicazione su Jelastic Cloud.
In questa lezione vedremo come scrivere ed usare correttamente il codice per la realizzazione di un'applicazione su Jelastic Cloud.
Link copiato negli appunti

In questa lezione ci dedichiamo direttamente al codice di esempio.

Per prima cosa creiamo il file package.json con cui integreremo le dipendenze di cui abbiamo bisogno, cioè il driver per MongoDB ed il framework Express per la definizione delle API REST:

{
  "name": "proverbi",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "dependencies": {
    "express": "^4.17.1",
    "mongodb": "^3.5.0"
  }
}

A questo punto possiamo scrivere il codice applicativo vero e proprio. Per prima cosa, vediamo come collegarci al database MongoDB. Il database, ricordiamo, si trova su un altro nodo e per questo dobbiamo avere a disposizione i seguenti parametri:

  • URL del database server. Sarà piuttosto lungo e stabilito da Jelastic. Quello che indichiamo nell'esempio è relativo al nostro container, ed equivale a node6748-env-4822122.it1.eur.aruba.jenv-aruba.cloud;
  • la porta TCP del servizio DBMS. Nel caso di MongoDB, di default è 27017;
  • lo username di accesso al servizio. Per i nostri test abbiamo utilizzato admin, cioè quello che ci è stato inviato con la mail. Ma per l'uso in produzione si dovrebbe sempre utilizzare un accesso senza privilegi di amministrazione;
  • la password relativa all'utente indicato al punto precedente;
  • il nome del database che abbiamo creato nel pannello di amministrazione.

Con buona parte di questi elementi componiamo una stringa di connessione nel seguente formato:

mongodb://{username}:{password}@{url_server_MongoDB}:{porta_server_MongoDB}

Questo il codice completo:

# importazione delle librerie
const express = require("express")
const parser = require("body-parser")
# attivazione di Express
var app = express()
# tramite i riferimenti "database" e "collection" interagiremo con i dati dall'interno dei metodi
var database
var collection
# la stringa multi-riga che utilizziamo come frase di benvenuto al servizio
const info=`
SERVIZIO ATTIVO<br>
Utilizzare le API per le interrogazioni:<br>
- GET /proverbi<br>
- GET /proverbi/:regione<br>
- POST /proverbi<br>
`
app.use(parser.json())
app.use(parser.urlencoded({ extended: true }))
# inizio delle funzioni di risposta alle interrogazioni dei client
app.get("/", (request, response) => {
    response.send(info)
})
app.post("/proverbi", (req, resp) => {
    collection.insert(req.body, (err, res) => {
        if(err) {
            return resp.status(500).send(err)
        }
		resp.status(201).send(res.result);
    })
})
app.get("/proverbi", (req, resp) => {
    collection.find({}).toArray((err, res) => {
        if(err) {
            return resp.status(500).send(err)
        }
        resp.send(res)
    })
})
app.get("/proverbi/:regione", (req, resp) => {
    collection.find({"regione": req.params.regione}).toArray((err, res) => {
        if(err) {
            return resp.status(500).send(err)
        }
        resp.send(res)
    })
})
# avvio del servizio in ascolto sulla porta 8888
# TUTTI I RIFERIMENTI A MONGODB VANNO SOSTITUITI CON QUELLI DEL PROPRIO ENVIRONMENT
app.listen(8888, () => {
    var MongoClient = require('mongodb').MongoClient;
	MongoClient.connect("mongodb://admin:CVNazf95839@node6848-env-4912222.it1.eur.aruba.jenv-aruba.cloud:27017", function(err, client) {
		if(!err) {
			database = client.db('proverbi')
			collection = database.collection("proverbi_locali")
		}
	})  // fine MongoClient.connect
})

La maggior parte del codice serve a definire la risposta che le API forniranno alle interrogazioni, mentre la parte finale mette il server in ascolto. Abbiamo pertanto un'applicazione Node.js identica ad una definita in locale, ad eccezione dei parametri per il collegamento al DBMS.

È importante che prima del caricamento su Jelastic, il codice venga pulito e sperimentato il più possibile. Conviene non avere fretta di caricarlo, e piuttosto sottoporlo in locale ad un accurato processo di debug. Prima di integrarlo nella piattaforma, potremo anche sottoporlo a unit testing sulle sue funzionalità interne, lasciando test più complessi alla fase successiva al deployment.

Nel codice finale ci occupiamo inoltre di impostare la connessione al database e l'invocazione di una collection che abbiamo scelto di chiamare proverbi_locali. La porta 8888 è quella che abbiamo scelto noi per il servizio, ma come vedremo sarà poi Jelastic a veicolare la connessione sull'indirizzo che attiverà. La porta di ascolto del servizio può essere utile per sperimentare il funzionamento, nel caso in cui ci connettiamo al server dall'interno del nodo ed invochiamo il servizio stesso in locale.

Ti consigliamo anche