api-middleware

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

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

CI Test Coverage Audit

التثبيت

npm i @sumor/api-middleware --save

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

إصدار Node.JS

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

يتطلب استخدام ES module في Node.JS

نظرًا لأن هذه الحزمة مكتوبة بلغة 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. اختبر الـ 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 أقل من 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

السياق

data

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

سيتم تحليل تحميل الملف ككائن يوجد به:

exposeApis

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