Nos ha parecido interesante hablar sobre un escenario bastante potente: desarrollar un webservice REST con Node.js y Express Framework utilizando como IDE el nuevo Visual Studio 2015 y desplegarlo finalmente en una Raspberry Pi con una distribución Linux. De esta forma podemos aprender tres cosas de golpe: desarrollar un webservice con Node.js, hacerlo con Visual Studio y utilizar una Raspberry Pi como servidor.
¿Qué es Node?
Node.js es una plataforma de desarrollo Back-End multiplataforma que trabaja con una arquitectura orientada a eventos, utiliza como lenguaje de desarrollo Javascript aprovechando el motor v8 creado por Google. Es una buena plataforma cuando esperamos una conexión pemanente con el frontend y además nos gusta mucho su rendimiento y ligereza.
¿Qué es Express Framework?
Es un Framework para Node.js que permite el desarrollo de aplicaciones web flexibles y ligeras de forma estructurada. Entre sus características principales destaca la opción de rutear las peticiones (route url) gestionando así las peticiones get y post. Esto nos permitirá poder realizar servicios web Rest de forma sencilla y dada su ligereza nos permitirá desplegarla en una Raspberry Pi sin problemas de rendimiento.
Instalando Node.JS para Visual Studio 2015
Hemos elegido emplear Visual Studio 2015 para desarrollar nuestro proyecto, lo cual no quiere decir que podáis utilizar cualquier otro IDE pero sí que hay que tener en cuenta que, en este caso Visual Studio instala en el mismo paquete también el servidor NodeJs, así que si, por ejemplo usamos como IDE Atom, tendremos que instalar Node con su paquete de instalación independiente ya sea Windows, Mac o Linux. Lo podemos descargar aquí.
En esta página podremos descargar el componente necesario para instalar NodeJs y el complemento para visual Studio.
Una vez descargado e instalado, ya podremos abrir el IDE y comprobar que ya podemos crear un proyecto con Nodejs.
Creando el proyecto y la aplicación.
Para inicarnos en Node.js, vamos a crear una aplicación sencilla: un «HolaMundo» de toda la vida pero algo más complejo, para entender cómo funcionan Node.js y Express framework.
Creamos un nuevo proyecto en Visual Studio 2015 y elegimos crear un proyecto con Nodej.js con Express 3:
Una vez Visual Studio termine de crear el proyecto, crearemos un nuevo fichero Javascript(vamos a llamarlo saludo.js) con el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// Utilizamos el Framework Express var express = require('express'); var app = express(); var port = 3000; // Nos declaramos un json var saludos = [ { tipo : 'Saludo básico', texto : "Hola mundo!" }, { tipo : 'Saludo cordial', texto : "Saludos mundo." }, { tipo : 'Saludo demasiado cordial', texto : "Saludos cordiales Mundo." }, { tipo : 'Saludo colega', texto : "Qué pasa mundo!!!" } ]; // Definiendo las rutas app.get('/', function (req, res) { res.json(saludos); }); app.get('/saludo/random', function (req, res) { var id = Math.floor(Math.random() * saludos.length); var q = saludos[id]; res.json(q); }); app.get('/saludo/:id', function (req, res) { if (saludos.length <= req.params.id || req.params.id < 0) { res.statusCode = 404; return res.send('Error 404: Saludo no encontrado'); } var q = saludos[req.params.id]; res.json(q); }); // Iniciando el servidor app.listen(port); console.log('Servidor iniciado en el puerto:' + port); |
Cada ruta se declara una función anónima que devuelve el Json que hemos creado(saludos) ya sea completo o filtrado.
Si queremos hacer debug en Visual Studio es importante que establezcamos como fichero de inicio el js que hemos creado, haciendo clic en el mismo y seleccionando la opción «set as Node.js startup file».
Si pulsamos F5 podremos ver las respuestas que nos da el sevicio web:
Si observamos la captura podremos entender cómo funcionan las rutas en este caso y en el siguiente en el que le indicamos el índice deseado:
Desplegándolo en la Raspberry Pi
Ahora vamos a ver cómo desplegarlo en una Raspberry Pi con Raspbian, para ello tendremos que instalar Node en ella, veamos como:
Nos conectamos a nuestro mini dispositivo mediante SSH y nos descargarnos el paquete utilizaremos el siguiente comando:
1 |
wget http://node-arm.herokuapp.com/node_latest_armhf.deb |
Y para instalarlo, ejecutaremos lo siguiente:
1 |
sudo dpkg -i node_latest_armhf.deb |
1 |
sudo dpkg -i node_latest_armhf.deb |
Ahora, para desplegar la aplicación que hemos creado, copiaremos el código en cualquier carpeta y ejecutaremos el siguiente comando:
1 |
node saludo.js |
Veremos en pantalla que la aplicación se levanta correctamente en nuestra Raspberry Pi:
Ahora, para probar la aplicación, vamos a cualquier dispositivo conectado a la misma red que nuestra Raspberry y en el navegador escribimos la siguiente URL:
http://{nombre-o-ip-de-raspberry}:3000/
Y veremos que nos devuelve el Json correctamente:
Es un ejemplo muy sencillo pero nos abre las puertas a hacer proyectos muy interesantes… ¿Ejemplo? Un servicio web que controla la iluminación de nuestra casa.
Desde aquí te proponemos que aportes alguna idea o proyecto que se te pueda ocurrir empleando estas tecnologías.