وسيط \ api

أداة Sumor Cloud .
توثيق أكثر

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

نسخة NPM عمليات تنزيل NPM CI جيت هاب اختبار جيت هاب تغطية جيت هاب فحص جيت هاب

التثبيت

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": "مُعلمة أ",
      "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

الخيارات لوسيط الـ 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 => {
    // افعل شيئًا قبل واجهة برمجية
  },
  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": "يجب أن تكون أكبر من 0"
        }
      ],
      "i18n": {
        "zh": {
          "GREATER_THAN_0": "يجب أن تكون أكبر من 0"
        }
      }
    },
    "b": {
      "name": "مُعلمة ب",
      "type": "number"
    }
  }
}

لمزيد من الاستخدامات، الرجاء الإشارة إلى المحقق

سياق

data

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

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

exposeApis

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