api-middleware

أداة سومور كلاود.
المزيد من التوثيق

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

نسخة NPM تحميل NPM CI GitHub اختبار GitHub تغطية GitHub تدقيق GitHub

التثبيت

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": "المعلمة أ",
      "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. اختبار الواجهة البرمجية
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: المعلمة أ
    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": "يجب أن يكون أكبر من صفر"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "يجب أن يكون أكبر من صفر"
        }
      }
    },
    "b": {
      "name": "المعلمة ب",
      "type": "number"
    }
  }
}

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

السياق

البيانات

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

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

exposeApis

يتضمن جميع الواجهات البرمجية المكشوفة