api-middleware

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

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

خيارات لوسيط الـ API

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": "يجب أن يكون أكبر من 0"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "يجب أن يكون أكبر من 0"
        }
      }
    },
    "b": {
      "name": "parameter b",
      "type": "number"
    }
  }
}

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

السياق

data

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

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

exposeApis

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