api-middleware

Una herramienta de Sumor Cloud.
Más documentación

API Middleware es un middleware para Node.JS. Puede exponer fácilmente una función a la API y validar parámetros

Versión de NPM Descargas de NPM CI de GitHub Test de GitHub Cobertura de GitHub Auditoría de GitHub

Instalación

npm i @sumor/api-middleware --save

Requisitos previos

Versión de Node.JS

Requiere Node.JS versión 18.x o superior

Requiere módulo ES de Node.JS

Como este paquete está escrito en módulo ES, por favor cambia el siguiente código en tu archivo package.json:

{
  "type": "module"
}

Uso

Uso básico

  1. Añade un archivo llamado plus.js en la carpeta de tu proyecto api
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [Opcional] Añade un archivo de configuración llamado plus.json en la carpeta de tu proyecto api
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parámetro a",
      "type": "number",
      "longitud": 3
    },
    "b": {
      "name": "parámetro b",
      "type": "number"
    }
  }
}
  1. Añade el siguiente código en tu archivo index.js
import express from 'express'
import apiMiddleware from '@sumor/api-middleware'

const app = express()

await apiMiddleware(app, process.cwd() + '/api')

app.listen(3000, () => {
  console.log('El servidor está corriendo en http://localhost:3000')
})
  1. Ejecuta index.js
node index.js
  1. Prueba la API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

o utiliza un navegador para abrir http://localhost:3000/plus?a=1&b=2

Opciones para apiMiddleware

import express from 'express'
import apiMiddleware from '@sumor/api-middleware'

const app = express()

await apiMiddleware(app, process.cwd() + '/api', {
  prefijo: '/api',
  preparar: async context => {
    // hacer algo antes de la API
  },
  finalizar: async (context, resultado) => {
    // hacer algo después de la API
  },
  excepción: async (context, error) => {
    // manejar el error
  }
})
app.listen(3000, () => {
  console.log('El servidor está corriendo en http://localhost:3000')
})

Más tipos de archivos de configuración

yaml

Puedes usar un archivo yaml para definir el archivo de configuración, reemplaza plus.json con plus.yml

El tipo solo es compatible con number, string, boolean, array, object

name: plus
parameters:
  a:
    name: parámetro a
    type: number
    longitud: 3
  b:
    name: parámetro b
    type: number
config.js

Para admitir funciones js en el archivo de configuración, puedes usar el archivo config.js, reemplaza plus.json con plus.config.js

export default {
  name: 'plus',
  parameters: {
    a: {
      name: 'parámetro a',
      type: 'number',
      longitud: 3
    },
    b: {
      name: 'parámetro b',
      type: 'number',
      regla: [
        {
          código: 'DEMASIADO_GRANDE',
          mensaje: 'b debe ser menor que 100',
          función: function (valor) {
            return valor < 100
          }
        }
      ]
    }
  }
}

Reglas de parámetros

Puedes consultar el siguiente ejemplo para aplicar reglas a los parámetros

{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parámetro a",
      "type": "number",
      "longitud": 3,
      "regla": [
        {
          "código": "MAYOR_QUE_0",
          "expresión": "^[1-9][0-9]*$",
          "mensaje": "debe ser mayor que 0"
        }
      ],
      "internacionalización": {
        "es": {
          "MAYOR_QUE_0": "debe ser mayor que 0"
        }
      }
    },
    "b": {
      "nombre": "parámetro b",
      "tipo": "número"
    }
  }
}

Para más información sobre el uso, consulta Validación

contexto

datos

Incluye todos los parámetros pasados en la solicitud

La carga de archivos se analizará como el siguiente objeto:

exposiciónApis

Incluye todas las APIs expuestas