Ir al contenido principal

Hapi Js

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

Entradas populares de este blog

Odin language: el lenguaje de programación orientado a datos para un desarrollo de software sensato

En esta serie sobre lenguajes de programación hablamos de Odin , un lenguaje orientado a datos. Un nuevo lenguaje de programación que nos podrá recordar a lenguajes como C++, Python, Golang o hasta Rust. Instalación (Windows): 1 2 3 4 $ git clone https://github.com/odin-lang/Odin $ cd Odin $ git pull $ build.bat release Debemos asegurarnos de crear la variable de entorno: Nombre: ODIN_HOME Valor: C:\Users\HP\Documents\pruebasOdin\Odin Ejemplo 1. Como primer programa tendremos al clásico "Hola, mundo". holamundo.odin package holamundo import " core:fmt " main : : proc ( ) { fmt . println ( " ¡Hola, mundo desde Odin! " ) } Construimos: $ odin build holamundo . odin - file Ejecutamos: $ holamundo .exe Recordar que si usamos Visual Studio Code podemos instalar el plugin de Odin Language: https://marketplace.visualstudio.com/items?itemName=DanielGavin.ols Ejemplo 2. Programa que muestre las variables que pod...

Programación Windows Batch (CMD) parte 3

Crear ciclos para efectuar operaciones tediosas nos ahorrará tiempo para realizar otras tareas. En está ocasión veremos ciclos con FOR . ¿Cuál es la síntaxis de bucle FOR en Windows Batch? Si está dentro de un archivo *.bat : FOR %%variable IN (seq) DO operaciones Si lo ejecutamos en una terminal: FOR %variable IN (seq) DO operaciones Ejemplo 1 . Recorrer una secuencia de números del 0 al 5: recorrer.bat @ echo off FOR %%i in ( 0 1 2 3 4 5 ) DO echo Hola no. %%i pause Nos imprimirá en pantalla: Hola no. 0 Hola no. 1 Hola no. 2 Hola no. 3 Hola no. 4 Hola no. 5 ¿Puedo usar contadores? Si, se pueden usar. Ejemplo 2 . Uso de contadores: contador.bat @ echo off set numeros = 1 2 3 4 5 6 7 8 9 10 set cont = 0 for %%a in ( %numeros% ) do ( echo Hola no. %%a :: Contador set /a cont+ = 1 ) echo Total: %cont% Este código nos imprimirá, además de los mensajes Hola no. 0 ..., el total de valores conta...

z/OS, ¿Qué es? y ¿Cuáles son sus herramientas?

  En este post veremos las herramientas de z/OS de IBM. z/OS es un sistema operativo de mainframe desarrollado por IBM.  Es parte de la serie IBM z Systems (anteriormente conocida como System z), que se utiliza en los sistemas mainframe de IBM. z/OS es uno de los sistemas operativos más utilizados en el mundo empresarial para ejecutar aplicaciones críticas y procesar grandes volúmenes de datos. Características clave de z/OS: Escalabilidad : z/OS es conocido por su capacidad para manejar grandes cargas de trabajo y escalabilidad vertical, lo que permite agregar recursos de hardware para satisfacer las demandas de procesamiento. Confiabilidad y disponibilidad : z/OS está diseñado para ofrecer alta disponibilidad y confiabilidad. Incorpora características como redundancia y recuperación ante fallas para garantizar la continuidad de las operaciones. Seguridad : Proporciona una amplia gama de funciones de seguridad, como autenticación, autorización y auditoría, para proteger los...