Hapi Js es un framework para Node.js, de código abierto y muy rico en funciones, diseñado para crear aplicaciones web y servicios HTTP de alta escalabilidad, especialmente APIs RESTful.
Se considera un framework centrado en la modularidad, seguridad y fiabilidad.
Posee un sistema de plugins, validación integrada (gracias a la librería Joi), integración de seguridad, con alto rendimiento y escalabilidad, registro y monitoreo de errores e independencia de otras dependencias externas.
Debemos instalarlo con este comando:
$ npm install @hapi/hapi
Comprobamos su instalación:
$ npm show hapi
Ahora crearemos un directorio donde estará el proyecto ``proyecto-hapi``:
$ mkdir proyecto-hapi $ cd proyecto-hapi $ npm init -y
Ahora crearemos un archivo ``server.js`` el cual tendrá este código:
'use strict'; const Hapi = require('@hapi/hapi'); const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); server.route({ method: 'GET', path: '/', handler: (request, h) => { return 'Hola mundo desde Hapi Js'; } }); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
Ejecutamos con Node:
$ node server.js
Abrimos el navegador en la ruta: http://localhost:3000/
Veremos un mensaje:
Hola mundo desde Hapi Js
Ahora crearemos una clase ``paramdto.js``:
export default class ParamDto{ constructor(id, name, message){ this.id = id; this.name = name; this.message = message; } static getData(){ return "{id:"+this.id+",name:"+this.name+",message:"+this.message+"}"; } }
Esta clase Javascript será cómo un módulo importable. Tendrá tres campos: id, name y message.
Ahora agregamos una nueva ruta en ``server.js`` e importamos la clase. Además modificamos la forma de importar en vez de usar ``require``.
'use strict'; // const Hapi = require('@hapi/hapi'); import Hapi from '@hapi/hapi'; import ParamDto from './paramdto.js'; const init = async () => { const server = Hapi.server({ port: 3000, host: 'localhost' }); server.route([{ method: 'GET', path: '/', handler: (request, h) => { return 'Hola mundo desde Hapi Js'; } }, { method: 'GET', path: '/params', handler: (request, h) => { let paramDto = new ParamDto(123, 'El libro rojo.', 'Un libro de Carl Jung.'); return paramDto; } }]); await server.start(); console.log('Server running on %s', server.info.uri); }; process.on('unhandledRejection', (err) => { console.log(err); process.exit(1); }); init();
Modificamos el archivo ``package.json``:
{ "name": "proyecto-hapi", "version": "1.0.0", "main": "server.js", "scripts": { "start": "node server.js", "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "Alquimista de código.", "license": "ISC", "description": "Un proyecto hecho en Hapi Js", "type":"module", "dependencies": { "hapi": "^18.1.0" } }
Con estos cambios podemos ejecutar la aplicación con este comando:
$ npm start
Abrimos la siguiente ruta en el navegador: http://localhost:3000/params
Salida:
{ "id": 123, "name": "El libro rojo.", "message": "Un libro de Carl Jung." }
¡Hemos creado nuestra primera aplicación sencilla con Hapi Js!
Enlaces:
https://hapi.dev/https://moldstud.com/articles/p-the-role-of-hapijs-in-modern-development-key-takeaways-from-recent-workshops
https://moldstud.com/articles/p-improving-your-hapijs-configuration-with-top-strategies-for-developers-to-maximize-performance-efficiency
Comentarios
Publicar un comentario