api-middleware

Ein Werkzeug von Sumor Cloud.
Weitere Dokumentationen

API Middleware ist ein Middleware für Node.JS. Es kann leicht Funktionen für APIs freigeben 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, ändere bitte den folgenden Code in deiner package.json-Datei:

{
  "type": "module"
}

Verwendung

Grundlegende Verwendung

  1. Füge eine Datei namens plus.js in deinen Projektordner api hinzu
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [Optional] Füge eine Konfigurationsdatei namens plus.json in deinen Projektordner api hinzu
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "Parameter a",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "Parameter b",
      "type": "number"
    }
  }
}
  1. Füge den folgenden Code in deine 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 auf http://localhost:3000')
})
  1. Führe index.js aus
node index.js
  1. Teste die API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

oder verwende 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 => {
    // do something before api
  },
  finalize: async (context, result) => {
    // do something after api
  },
  exception: async (context, error) => {
    // handle error
  }
})
app.listen(3000, () => {
  console.log('Server läuft auf http://localhost:3000')
})

Weitere Konfigurationsdateitypen

yaml

Du kannst eine yaml-Datei verwenden, um die Konfigurationsdatei zu definieren, ersetze 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, kannst du die Datei config.js verwenden und plus.json durch plus.config.js ersetzen

export default {
  name: 'plus',
  parameters: {
    a: {
      name: 'Parameter a',
      type: 'number',
      length: 3
    },
    b: {
      name: 'Parameter b',
      type: 'number',
      rule: [
        {
          code: 'ZU_GROSS',
          message: 'b sollte kleiner als 100 sein',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Regel für Parameter

Du kannst das folgende Beispiel verwenden, um Regeln für Parameter anzuwenden

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

Für weitere Verwendungen siehe Validator

Kontext

Daten

Es enthält alle im Request übergebenen Parameter

Datei-Uploads werden als folgendes Objekt analysiert:

exposeApis

Es enthält alle freigegebenen APIs