api-middleware

Ein Sumor Cloud Tool. Weitere Dokumentation

API Middleware ist ein Middleware für Node.JS. Es kann leicht eine Funktion für die API 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, ändern Sie bitte den folgenden Code in Ihrer package.json-Datei:

{
  "type": "module"
}

Verwendung

Grundverwendung

  1. Fügen Sie in Ihrem Projektordner api eine Datei namens plus.js 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. Führen Sie index.js aus
node index.js
  1. Testen der 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 vorbereiten
  },
  finalize: async (context, result) => {
    // Nach der API etwas abschließen
  },
  exception: async (context, error) => {
    // Fehler behandeln
  }
})
app.listen(3000, () => {
  console.log('Server läuft unter http://localhost:3000')
})

Mehr Konfigurationsdateitypen

yaml

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

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 die Datei config.js 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 sollte kleiner als 100 sein',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

Parameterregel

Sie können sich an folgendem Beispiel orientieren, 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": "muss größer als 0 sein"
        }
      }
    },
    "b": {
      "name": "Parameter b",
      "type": "number"
    }
  }
}

Für weitere Verwendungsmöglichkeiten siehe Validator

Kontext

data

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

Datei-Uploads werden als folgendes Objekt geparst:

exposeApis

Es enthält alle freigegebenen APIs