api-middleware

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

API Middleware هو وسيط لـ 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 module

نظرًا لأن هذه الحزمة كتبت بلغة 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": "المعلمة أ",
      "type": "number",
      "length": 3
    },
    "b": {
      "name": "المعلمة ب",
      "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

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

name: plus
parameters:
  a:
    name: المعلمة أ
    type: number
    length: 3
  b:
    name: المعلمة ب
    type: number
config.js

لدعم دوال JS في ملف التكوين، يُمكنك استخدام ملف config.js، استبدل plus.json بـ plus.config.js

export default {
  name: 'plus',
  parameters: {
    a: {
      name: 'المعلمة أ',
      type: 'number',
      length: 3
    },
    b: {
      name: 'المعلمة ب',
      type: 'number',
      rule: [
        {
          code: 'TOO_BIG',
          message: 'يجب أن يكون b أقل من 100',
          function: function (value) {
            return value < 100
          }
        }
      ]
    }
  }
}

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

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

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

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

السياق

data

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

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

exposeApis

يتضمن جميع الـ APIs المعرّفة