api-middleware

Un outil Sumor Cloud.
Voir la documentation complète

API Middleware est un middleware pour Node.JS. Il peut facilement exposer des fonctions à une API et valider les paramètres.

Version NPM Téléchargements NPM GitHub CI GitHub Test GitHub Couverture GitHub Audit

Installation

npm i @sumor/api-middleware --save

Prérequis

Version Node.JS

Nécessite Node.JS version 18.x ou supérieure

Module ES Node.JS requis

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json:

{
  "type": "module"
}

Utilisation

Utilisation de base

  1. Ajoutez un fichier nommé plus.js dans le dossier de votre projet api
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [Facultatif] Ajoutez un fichier de configuration nommé plus.json dans le dossier de votre projet api
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "paramètre a",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "paramètre b",
      "type": "number"
    }
  }
}
  1. Ajoutez le code suivant dans votre fichier 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('Le serveur fonctionne sur http://localhost:3000')
})
  1. Exécuter index.js
node index.js
  1. Tester l'API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

ou utilisez le navigateur pour ouvrir http://localhost:3000/plus?a=1&b=2

Options pour 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 => {
    // faire quelque chose avant l'API
  },
  finalize: async (context, result) => {
    // faire quelque chose après l'API
  },
  exception: async (context, error) => {
    // gérer l'erreur
  }
})
app.listen(3000, () => {
  console.log('Le serveur fonctionne sur http://localhost:3000')
})

Plus de types de fichiers de configuration

yaml

Vous pouvez utiliser un fichier yaml pour définir le fichier de configuration, remplacez plus.json par plus.yml

Le type supporte uniquement number, string, boolean, array, object

name: plus
parameters:
  a:
    name: paramètre a
    type: number
    length: 3
  b:
    name: paramètre b
    type: number
config.js

Pour supporter une fonction JS dans le fichier de configuration, vous pouvez utiliser le fichier config.js, remplacez plus.json par plus.config.js

export default {
  name: 'plus',
  parameters: {
    a: {
      name: 'paramètre a',
      type: 'number',
      length: 3
    },
    b: {
      name: 'paramètre b',
      type: 'number',
      rule: [
        {
          code: 'TOO_BIG',
          message: 'b doit être inférieur à 100',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Règle des paramètres

Vous pouvez vous référer à l'exemple ci-dessous pour appliquer des règles aux paramètres

{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "paramètre a",
      "type": "number",
      "length": 3,
      "rule": [
        {
          "code": "GREATER_THAN_0",
          "expression": "^[1-9][0-9]*$",
          "message": "doit être supérieur à 0"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "必须大于0"
        }
      }
    },
    "b": {
      "name": "paramètre b",
      "type": "number"
    }
  }
}

Pour plus d'exemples, veuillez consulter Validator

context

data

Il contient tous les paramètres transmis dans la requête

Le téléchargement de fichiers sera analysé comme ci-dessous :

exposeApis

Il contient toutes les APIs exposées