Voy a inaugurar la sección de Node con un pequeño ejemplo, como realizar un servidor Rest en node usando el “framework” Hapi. Pero antes de todo, ¿Que es Node? Si buscamos en la wikipedia podemos encontrar lo siguiente:
Node.js es un entorno en tiempo de ejecución multi plataforma, de código abierto, para la capa del servidor (pero no limitándose a ello) basado en el lenguaje de programación ECMAScript, asíncrono, con I/O de datos en una arquitectura orientada a eventos y basado en el motor V8 de Google.
Yo comencé a usar NodeJs hace unos tres años, cuando me fui a vivir a Londres, en la empresa en la que aterrizaba estaban migrando de Java a Node, con lo que fue la oportunidad perfecta para iniciarme. Tras unos comienzos bastante complicados, tienes que cambiar tu forma de pensar y programar, empecé a sentirme bastante cómodo en Node.
En Node existen varios “frameworks” o herramientas que permiten la creación de api Rest, la más usada es “express“, a mi me gusta mucho usar en node, Hapijs. HapiJs permite construir aplicaciones reusables.
Crear un servidor en NodeJs con Hapijs, es lo más simple del mundo:
server.start(() => { console.log('Server running at:', server.info.uri); }); module.exports = server;
De esta forma ya tenemos funcionando nuestro servidor, ahora solo hay que indicar las rutas donde queremos que tengamos algún tipo de acción:
let routes = [ { method: 'POST', // Must handle both GET and POST path: '/user', // The callback endpoint registered with the provider config: { handler: function (request, reply) { pay.push(request.payload); reply(request.payload); } } },{ method: 'GET', // Must handle both GET and POST path: '/user', // The callback endpoint registered with the provider config: { handler: function (request, reply) { reply(pay) } } },{ method: 'DELETE', // Must handle both GET and POST path: '/user', // The callback endpoint registered with the provider config: { handler: function (request, reply) { pay = []; reply(pay); } } } ]; server.route(routes);
Para hacer funcionar el ejemplo, tan solo tenemos que crear dos ficheros, “server.js” y “package.json” y ejecutar:
npm install
npm start
server.js
'use strict'; const Hapi = require('hapi'); const fs = require('fs'); const server = new Hapi.Server(); let defs = { port: process.env.PORT || '8080', localhost: process.env.SERVER ||'0.0.0.0' }; server.connection({ host: defs.localhost, port: defs.port }); let pay = []; let routes = [ { method: 'POST', // Must handle both GET and POST path: '/user', // The callback endpoint registered with the provider config: { handler: function (request, reply) { pay.push(request.payload); reply(request.payload); } } },{ method: 'GET', // Must handle both GET and POST path: '/user', // The callback endpoint registered with the provider config: { handler: function (request, reply) { reply(pay) } } },{ method: 'DELETE', // Must handle both GET and POST path: '/user', // The callback endpoint registered with the provider config: { handler: function (request, reply) { pay = []; reply(pay); } } } ]; server.route(routes); server.start(() => { console.log('Server running at:', server.info.uri); }); module.exports = server;
package.json
{ "name": "rESTserver", "version": "0.0.1", "description": "REST server", "main": "server.js", "scripts": { "start": "nodejs server.js" }, "author": "nemedus", "license": "MIT", "dependencies": { "hapi": "12.1.0" } }