api-middleware

Ein Sumor Cloud Tool.
Mehr Dokumentation

API Middleware ist ein Middleware für Node.JS. Es kann Funktionen einfach für APIs zugänglich machen 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

Erfordert 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 Ihrer index.js-Datei hinzu.
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. Führen Sie index.js aus.
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 verwenden Sie den Browser, um http://localhost:3000/plus?a=1&b=2 zu öffnen.

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

Weitere Dateitypen für Konfigurationsdateien

Yaml

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

Der Typ unterstützt 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

Um JS-Funktionen in der Konfigurationsdatei zu unterstützen, 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: 'ZU_GROSSE_ZAHL',
          message: 'b sollte kleiner als 100 sein',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Parameterregeln

Sie können das folgende Beispiel verwenden, um Regeln auf Parameter anzuwenden.

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

Für weitere Anwendungsbeispiele verweisen Sie bitte auf Validator.

Kontext

Daten

Es enthält alle Parameter, die in der Anfrage übergeben wurden.

Datei-Uploads werden als folgendes Objekt analysiert:

exposeApis

Es enthält alle freigegebenen APIs.