api-middleware

أداة Sumor Cloud.

المزيد من التوثيق

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

NPM Version NPM Downloads GitHub CI GitHub Test GitHub Coverage GitHub Audit

التثبيت

npm i @sumor/api-middleware --save

المتطلبات

إصدار Node.JS

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

استخدام وحدة ES في Node.JS

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

الأنواع يدعم فقط 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 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": "must be greater than 0"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "必须大于0"
        }
      }
    },
    "b": {
      "name": "parameter b",
      "type": "number"
    }
  }
}

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

السياق

data

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

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

exposeApis

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