api-middleware

Ein Sumor Cloud Tool.
Weitere Dokumentation

API Middleware ist ein Middleware für Node.JS. Es kann leicht Funktionen an die API weitergeben und Parameter validieren.

NPM Version NPM Downloads GitHub CI GitHub Test GitHub Coverage GitHub Audit

Installation

npm i @sumor/api-middleware --save

Voraussetzungen

Node.JS Version

Benötigt Node.JS Version 18.x oder höher

Erforderliches Node.JS ES-Modul

Da dieses Paket in ES-Modul geschrieben ist, ändern Sie bitte den folgenden Code in Ihrer package.json-Datei:

{
  "type": "module"
}

Verwendung

Grundverwendung

  1. Fügen Sie eine Datei mit dem Namen plus.js in Ihrem Projektordner api hinzu
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [Optional] Fügen Sie eine Konfigurationsdatei mit dem Namen plus.json in Ihrem Projektordner api hinzu
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "Parameter a",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "Parameter b",
      "type": "number"
    }
  }
}
  1. Fügen Sie den folgenden Code in Ihre index.js-Datei ein
import express from 'express'
import apiMiddleware from '@sumor/api-middleware'

const app = express()

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

app.listen(3000, () => {
  console.log('Server läuft unter http://localhost:3000')
})
  1. Starten Sie index.js
node index.js
  1. Testen Sie die API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

oder öffnen Sie im Browser http://localhost:3000/plus?a=1&b=2

Optionen für 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 => {
    // Vor der API-Aufruf etwas tun
  },
  finalize: async (context, result) => {
    // Nach der API-Aufruf etwas tun
  },
  exception: async (context, error) => {
    // Fehler behandeln
  }
})
app.listen(3000, () => {
  console.log('Server läuft unter http://localhost:3000')
})

Weitere Konfigurationsdateitypen

yaml

Sie können eine YAML-Datei verwenden, um die Konfigurationsdatei zu definieren, ersetzen Sie plus.json durch plus.yml

Typen unterstützen nur number, string, boolean, array, object

name: plus
parameters:
  a:
    name: Parameter a
    type: number
    length: 3
  b:
    name: Parameter b
    type: number
config.js

Zur Unterstützung von JavaScript-Funktionen in der Konfigurationsdatei, können Sie eine config.js-Datei verwenden, ersetzen Sie plus.json durch plus.config.js

export default {
  name: 'plus',
  parameters: {
    a: {
      name: 'Parameter a',
      type: 'number',
      length: 3
    },
    b: {
      name: 'Parameter b',
      type: 'number',
      rule: [
        {
          code: 'TOO_BIG',
          message: 'b should be less than 100',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Parameterregel

Sie können unten stehendes Beispiel verwenden, um Regeln auf Parameter anzuwenden

{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "Parameter a",
      "type": "number",
      "length": 3,
      "rule": [
        {
          "code": "GREATER_THAN_0",
          "expression": "^[1-9][0-9]*$",
          "message": "muss größer als 0 sein"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "必须大于0"
        }
      }
    },
    "b": {
      "name": "Parameter b",
      "type": "number"
    }
  }
}

Für weitere Verwendungsmöglichkeiten, siehe Validator

Kontext

data

Es enthält alle im Anfrageparameter übergebenen Parameter

Ein Datei-Upload wird als folgendes Objekt analysiert:

exposeApis

Es enthält alle freigegebenen APIs