api-middleware

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

API Middleware هو 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 أو أعلى.

تحتاج 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": "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 أقل من 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

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