وسيط الواجهة البرمجية

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

API Middleware هو وسيط لـ Node.JS. يمكنه بسهولة عرض الوظيفة للواجهة البرمجية والتحقق من المعلمات

إصدار NPM عدد التنزيلات من NPM GitHub CI GitHub Test GitHub Coverage GitHub Audit

التثبيت

npm i @sumor/api-middleware --save

الشروط الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS 18.x أو أعلى

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

نظرًا لأن هذه الحزمة مكتوبة بلغة ES module، يرجى تغيير الشيفرة التالية في ملف 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. اختبار الواجهة البرمجية
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 => {
    // افعل شيئًا قبل الواجهة البرمجية
  },
  finalize: async (context, result) => {
    // افعل شيئًا بعد الواجهة البرمجية
  },
  exception: async (context, error) => {
    // التعامل مع الخطأ
  }
})
app.listen(3000, () => {
  console.log('الخادم يعمل على http://localhost:3000')
})

المزيد من أنواع ملفات التكوين

yaml

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

النوع يدعم فقط number, string, boolean, array, object

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 أقل من 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"
    }
  }
}

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

context

data

تحتوي على جميع المعلمات المرسلة في الطلب

سيتم تحليل تحميل الملف كما يلي:

exposeApis

تحتوي على كافة الواجهات البرمجية المعرضة