وسيط-أبي

أداة Sumor Cloud.
المزيد من التوثيق

وسيط API هو وسيط لـ Node.JS. يمكنه بسهولة عرض الدوال لـ API، والتحقق من المعلمات

إصدار NPM تنزيلات NPM CI GitHub اختبار GitHub تغطية GitHub فحص GitHub

التثبيت

npm i @sumor/api-middleware --save

المتطلبات الأولية

نسخة Node.JS

تتطلب نسخة Node.JS 18.x أو أعلى

تتطلب وحدة Node.JS ES

نظرًا لأن هذه الحزمة مكتوبة بوحدة ES، يرجى تغيير الكود التالي في ملف package.json الخاص بك:

{
  "type": "module"
}

الاستخدام

الاستخدام الأساسي

  1. أضف ملفًا بالاسم plus.js في مجلد مشروعك api
export default async (context, req, res) => {
  const { data } = context
  const { a, b } = data
  return a + b
}
  1. [اختياري] أضف ملف تكوين بالاسم plus.json في مجلد مشروعك api
{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parameter a",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "parameter b",
      "type": "number"
    }
  }
}
  1. أضف الكود التالي في ملف 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('الخادم قيد التشغيل على http://localhost:3000')
})
  1. تشغيل index.js
node index.js
  1. اختبار الـ API
curl -X POST http://localhost:3000/plus -H "Content-Type: application/json" -d '{"a": 1, "b": 2}'

أو استخدم المتصفح لفتح http://localhost:3000/plus?a=1&b=2

خيارات 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 => {
    // افعل شيئًا قبل الـ API
  },
  finalize: async (context, result) => {
    // افعل شيئًا بعد الـ API
  },
  exception: async (context, error) => {
    // تعامل مع الخطأ
  }
})
app.listen(3000, () => {
  console.log('الخادم قيد التشغيل على http://localhost:3000')
})

أنواع ملف تكوين إضافية

yaml

يمكنك استخدام ملف yaml لتعريف ملف التكوين، استبدل plus.json بـ plus.yml

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

لدعم وظيفة js في ملف التكوين، يمكنك استخدام ملف config.js، استبدل plus.json بـ 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
          }
        }
      ]
    }
  }
}

قاعدة المعلمة

يمكنك الرجوع إلى المثال أدناه لتطبيق قواعد على المعلمات

{
  "name": "plus",
  "parameters": {
    "a": {
      "name": "parameter a",
      "type": "number",
      "length": 3,
      "rule": [
        {
          "code": "GREATER_THAN_0",
          "expression": "^[1-9][0-9]*$",
          "message": "يجب أن يكون أكبر من 0"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "يجب أن يكون أكبر من 0"
        }
      }
    },
    "b": {
      "name": "parameter b",
      "type": "number"
    }
  }
}

لمزيد من الاستخدام، يرجى الرجوع إلى محقق

context

البيانات

تتضمن جميع المعلمات الممرّة في الطلب

سيتم تحليل تحميل الملف على أنه الكائن التالي:

exposeApis

تتضمن جميع الـ API المُعرضة