3.1.4 • Published 6 years ago

insac v3.1.4

Weekly downloads
3
License
MIT
Repository
github
Last release
6 years ago

Insac JS es un framework de creación de servicios web basado en lenguaje script que utiliza arquitectura REST. Está enfocado en la organización, automatización y reutilización de código.

La documentación se encuentra disponible en la página https://insacjs.com.

Para crear nuevos proyectos, utilice la Interfaz de línea de comandos INSAC CLI

Tecnologías utilizadas

El framework ha sido implementado utilizando el lenguaje JavaScript bajo el estándar de programación ECMAScript 2017, esto por el potencial que alcanzó el lenguaje gracias a NodeJS, un entorno de ejecución para JavaScript construido con el motor de JavaScript V8 de Chrome.

NodeJS permite crear aplicaciones del lado del servidor, además de que es una excelente herramienta para crear servicios web gracias a su modelo de operaciones E/S sin bloqueo orientado a eventos, que lo hace liviano y eficiente.

A continuación de describen las diferentes tecnologías y herramientas mas importantes con las que trabaja el framework:

NombreVersiónDescripción
NodeJS^8.0Entorno de programación de JavaScript.
MPM^6.3Gestor de paquetes de NodeJS.
Express^4.16Framework de NodeJS.
Sequelize^4.37Framework ORM de NodeJS.
Yarn^1.7Manejador de dependencias.
PM2^2.7Gestor avanzado de procesos de producción para NodeJS.
Git^2.7Sistema de control de versiones distribuido de código abierto.
Eslint^4.19Herramienta de linting para JavaScript.

Soporta los siguientes gestores de base de datos:

NombreVersión
PostgreSQL^9.4
MySQL^5.7
MSSQLSERVER2017
SQLite3.24

Características

Entre las características más importantes del framework se encuentran las siguientes:

  • Estructura de proyecto: Utiliza un sistema que permite identificar a los componentes de la aplicación y sus respectivas funciones a través del nombre y la extensión de los ficheros.

  • Creación automática del APIDOC: Crea el APIDOC de manera automática cada vez que se ejecuta la aplicación, de esta forma se garantiza que siempre estará actualizada.

  • Validador automático: Valida los datos de entrada de forma automática, cuando los datos llegan al Middleware o al Controlador, éstos ya se encuentran validados y convertidos al tipo de dato correspondiente.

  • Sistema de filtrado de datos: Por defecto, todas las peticiones incluyen un sistema de filtrado por campos, adicionalmente, es posible optimizar la consulta con la base de datos utilizando los filtros que se envían a través de la URL.

  • Esquemas de base de datos: Sobre una base de datos, se crea un esquema para cada módulo, de esta forma es posible tener dos tablas o modelos con el mismo nombre, pero en diferentes módulos. Es posible relacionar modelos de diferentes módulos.

  • Sistema de logs: Por defecto, se muestran mensajes en la terminal para monitorear todas las peticiones y éstas se registran en ficheros de logs.

Referencias externas

Ejemplo.-

Para preparar un proyecto básico, desde la terminal ejecuta los siguientes comandos:

# Crea la carpeta del proyecto
$ mkdir app
$ cd app

# Inicializa el gestor de paquetes de Node.
$ npm init

# Instala el framework
$ npm install --save insac

Posteriormente, deberá crear algunos archivos con la siguiente estructura:

app
  ├─ src
  │     └─ modules
  │           └─ API
  │                 ├─ resources
  │                 │     └─ welcome
  │                 │           ├─ welcome.controller.js
  │                 │           ├─ welcome.input.js
  │                 │           ├─ welcome.output.js
  │                 │           └─ welcome.route.js
  │                 └─ api.module.js
  ├─ node_modules
  ├─ index.js
  └─ package.json

Y el siguiente contenido:

api.module.js

const { Module } = require('insac')

module.exports = (app) => {
  return new Module(app.config.API)
}

welcome.route.js

module.exports = (app) => {
  const ROUTE = {}

  ROUTE.hello = {
    path   : '/welcome/hello/:name',
    method : 'get'
  }

  return ROUTE
}

welcome.input.js

const { Field } = require('insac')

module.exports = (app) => {
  const INPUT = {}

  INPUT.hello = {
    params: {
      name: Field.STRING({ allowNull: false })
    },
    query: {
      number: Field.INTEGER({ allowNull: false })
    }
  }

  return INPUT
}

welcome.output.js

const { Field } = require('insac')

module.exports = (app) => {
  const OUTPUT = {}

  OUTPUT.hello = {
    message : Field.STRING(),
    number  : Field.INTEGER()
  }

  return OUTPUT
}

welcome.controller.js

module.exports = (app) => {
  const CONTROLLER = {}

  CONTROLLER.hello = async (req, res, next) => {
    try {
      const NAME   = req.params.name
      const NUMBER = req.query.number
      const RESULT = { message: `Hola ${NAME}!!!`, number: NUMBER }
      res.success200(RESULT, 'Mensaje enviado exitosamente.')
    } catch (err) { return next(err) }
  }

  return CONTROLLER
}

index.js

const { Insac } = require('insac')

const service = new Insac()

service.addModule('api')

service.init().catch(e => {
  console.log(e)
  process.exit(1)
})

module.exports = service

Después, ejecuta la aplicación:

$ node index.js

http://localhost:4000

Captura 1

http://localhost:4000/apidoc/API

Captura 2

Petición de ejemplo

Captura 3

Mensajes de logs

Captura 4

3.1.4

6 years ago

3.1.3

6 years ago

3.1.2

6 years ago

3.1.1

6 years ago

3.1.0

6 years ago

3.0.8

6 years ago

3.0.7

6 years ago

3.0.6

6 years ago

3.0.5

6 years ago

3.0.4

6 years ago

3.0.3

6 years ago

3.0.2

6 years ago

3.0.1

6 years ago

3.0.0

6 years ago

2.3.1

6 years ago

2.3.0

6 years ago

2.2.4

6 years ago

2.2.3

6 years ago

2.2.2

6 years ago

2.2.1

6 years ago

2.2.0

6 years ago

2.1.11

6 years ago

2.1.10

6 years ago

2.1.9

6 years ago

2.1.8

6 years ago

2.1.7

6 years ago

2.1.6

6 years ago

2.1.5

6 years ago

2.1.4

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.7

6 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago