api-middleware

Una Herramienta Sumor Cloud.
Más Documentación

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

Versión NPM Descargas NPM CI GitHub Pruebas GitHub Cobertura GitHub Auditoría GitHub

Instalación

npm i @sumor/api-middleware --save

Requisitos Previos

Versión de Node.JS

Se 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 cambie el siguiente código en su archivo package.json:

{
  "type": "module"
}

Uso

Uso Básico

  1. Agregue un archivo llamado plus.js en la carpeta de su proyecto api
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [Opcional] Agregue un archivo de configuración llamado plus.json en la carpeta de su proyecto api
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parámetro a",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "parámetro b",
      "type": "number"
    }
  }
}
  1. Agregue el siguiente código en su 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. Ejecute index.js
node index.js
  1. Pruebe la API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

o use 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', {
  prefix: '/api',
  prepare: async context => {
    // hacer algo antes de la API
  },
  finalize: async (context, result) => {
    // hacer algo después de la API
  },
  exception: async (context, error) => {
    // manejar error
  }
})
app.listen(3000, () => {
  console.log('El servidor está corriendo en http://localhost:3000')
})

Más Tipos de Archivos de Configuración

yaml

Puede usar el archivo yaml para definir el archivo de configuración, reemplace plus.json con plus.yml

El tipo solo admite number, string, boolean, array, object

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

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

export default {
  name: 'plus',
  parameters: {
    a: {
      name: 'parámetro a',
      type: 'number',
      length: 3
    },
    b: {
      name: 'parámetro b',
      type: 'number',
      rule: [
        {
          code: 'TOO_BIG',
          message: 'b debería ser menor que 100',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Regla de Parámetros

Puede hacer referencia al siguiente ejemplo para aplicar reglas a los parámetros

{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parámetro a",
      "type": "number",
      "length": 3,
      "rule": [
        {
          "code": "MAYOR_QUE_0",
          "expression": "^[1-9][0-9]*$",
          "message": "debe ser mayor que 0"
        }
      ],
      "i18n": {
        "zh": {
          "MAYOR_QUE_0": "debe ser mayor que 0"
        }
      }
    },
    "b": {
      "name": "parámetro b",
      "type": "number"
    }
  }
}

Para más usos, por favor consulte Validador

context

data

Incluye todos los parámetros pasados en la solicitud

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

exposeApis

Incluye todas las API expuestas