npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

catro-eixos-swagger

v3.1.0

Published

Conector de catro-eixos-js para swagger

Downloads

327

Readme

catro-eixos-swagger

Middleware de conexión de una especificación de swagger con catro-eixos-js

Convención de nombres de procesos para su tramitación

Swagger 2.0 forma el nombre de la operación a tramitar a partir de dos elementos:

  • x-swagger-router-controller (relacionado con la tag): nos da el controlador
  • operationId: nos da la operación a llamar a nivel del controlador y servicio.

Por lo tanto, es necesario mapear esto a una familia y un proceso.

En la especificación a conectar, se deberán definir ambos campos y saber que, a nivel de catro-eixos-js, se va a recibir un dato de la forma que sigue: [x-swagger-router-controller -> Familia][operationId -> proceso]

De esta forma, si queremos conectar una peticion GET /v1/recurso/{id}

A nivel de swagger:


    paths:
        /recurso/{id}:
            x-swagger-router-controller: Recurso
            operationId: get
        

Y a nivel de catro-eixos-js se recibirá una llamada a un proceso Recurso.get

Paso de productos al sistema

Los procesos que deriven de ProcesoSwagger tienen la habilidad de acceder al producto que se espera que devuelvan de acuerdo a las especificaciones de swagger.

Los Productos que genera catro-eixos-swagger tienen control de errores y se aseguran que, los valores seteados por el proceso estén de acuerdo con la especificación;


const {ProcesoSwagger} = require("catro-eixos-swagger");

class MiProceso extends ProcesoSwagger{

    __mi_paso(){

        //aquí puedo acceder al producto
        this.producto().id = "foo";

    }

    KO__mi_paso(err){
        //si seteamos un valor incorrecto
        //lo podemos controlar aquí
        // "[Producto][[id][Se esperaba un entero]]"
    }

    __mi_paso2(){
        //se puede realizar una asignación directa de todo el 
        //producto (realiza las validaciones)
        this.asignarProducto({
            id: "foo",
            ...
        })
    }
}

Uso

Generación de código

Para poner el sistema en marcha es necesario tener un exportador de swagger a controladores.

Copia la carpeta ~/node_modules/catro-eixos-swagger/plantillas a un punto de tu proyecto (~/plantillas)

cp -a ./node_modules/catro-eixos-swagger/plantillas ./plantillas

Se puede realizar con docker, crea una carpeta bin en el proyecto. Se coloca el siguiente código:


#!/bin/bash

# evitamos que el generador toque nuestro código de swagger
cp api/swagger.yaml api/swagger.yaml.cp

docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate \
    -i /local/api/swagger.yaml \
    -l nodejs-server \
    -t /local/plantillas \
    -o /local/

mv api/swagger.yaml.cp api/swagger.yaml

#mv index.js app.js

Ejecutamos este script (desde ~) y el código resultante de generación estará en ~/controllers

Boostraping

Para arrancar un servidor que sirva nuestra api necesitamos crear un boostrap (~/boostrap.js)

//boostrap.js

const {boot} = require("catro-eixos-swagger").Bootstrap;

boot("Procesador cargado", () => {

    return this.initProcesador({

        "MiFamiliaProcesos": __dirname + "/procesos"

    })

})

boot("Segunda tarea", () => {


})

boot("Tercera tarea", () => {


})

Estas tareas (se pueden poner las que queramos) se ejecutan secuencialmente.

Sólo es esencial la primera (la inicialización del procesador de catro-eixos-js)