api-middleware

Uma Ferramenta Sumor Cloud.
Mais Documentação

Middleware de API é um middleware para Node.JS. Pode facilmente expor funções para a API e validar parâmetros

Versão do NPM Downloads do NPM CI do GitHub Teste do GitHub Cobertura do GitHub Auditoria do GitHub

Instalação

npm i @sumor/api-middleware --save

Pré-requisitos

Versão do Node.JS

Requer Node.JS versão 18.x ou superior.

Necessário para Node.JS ES module

Como este pacote é escrito em ES module, por favor altere o seguinte código no seu arquivo package.json:

{
  "type": "module"
}

Uso

Uso Básico

  1. Adicione um arquivo chamado plus.js na pasta do seu projeto api
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [Opcional] Adicione arquivo de configuração chamado plus.json na pasta do seu projeto api
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parâmetro a",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "parâmetro b",
      "type": "number"
    }
  }
}
  1. Adicione o seguinte código no seu arquivo 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('Servidor está em execução em http://localhost:3000')
})
  1. Rode o index.js
node index.js
  1. Teste a API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

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

Opções 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 => {
    // faça algo antes da api
  },
  finalize: async (context, result) => {
    // faça algo depois da api
  },
  exception: async (context, error) => {
    // lidar com o erro
  }
})
app.listen(3000, () => {
  console.log('Servidor está em execução em http://localhost:3000')
})

Mais Tipos de Arquivos de Configuração

yaml

Você pode usar arquivo yaml para definir arquivo de configuração, substitua plus.json por plus.yml

tipos de suporte são somente 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 suportar função js no arquivo de configuração, você pode usar o arquivo config.js, substitua plus.json por 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 deve ser menor que 100',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Regra de Parâmetro

Você pode usar o exemplo abaixo para aplicar regras aos parâmetros

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

Para mais uso, por favor consulte Validador

contexto

data

Inclui todos os parâmetros passados na requisição

o upload de arquivos será analisado como o objeto abaixo:

exposeApis

Inclui todas as APIs expostas