Skip to content

مرجع REST API

Vapor مبني على فلسفة تُعطي الأولوية للـ API. كل إجراء متاح في واجهة الويب مدعوم بـ REST API شاملة وموثقة توثيقاً كاملاً.

المصادقة

يستخدم Vapor API مصادقة Bearer Token عبر JSON Web Tokens (JWT).

  1. أولاً، أنشئ API Token عبر واجهة المستخدم (قائمة API Token) أو قم بالمصادقة عبر نقطة النهاية /api/v1/auth/login باستخدام اسم المستخدم وكلمة المرور.
  2. أدرج الرمز المميز في ترويسة Authorization لجميع الطلبات اللاحقة:
http
Authorization: Bearer <your_jwt_token>

مواصفة OpenAPI

ينشر Vapor مواصفة OpenAPI 3.1.0 الكاملة الخاصة به. يمكنك الوصول إلى ملف openapi.yaml الخام من الكود المصدري أو الاستعلام عن نقطة النهاية /api/v1 (إذا كان Swagger UI مُفعّلاً في نشرك).

يغطي الـ API جميع ميزات المنصة بما في ذلك:

  • إدارة نظام المضيف (/api/v1/system/*)
  • الشبكات (/api/v1/network/*)
  • التخزين (/api/v1/storage/*)
  • الافتراضية (/api/v1/virtualization/*)
  • Kubernetes (/api/v1/kubernetes/*)

رفع الملفات الكبيرة (بروتوكول TUS)

بالنسبة لنقاط النهاية التي تتطلب رفع ملفات ضخمة—مثل صور ISO للآلات الافتراضية أو صور Docker/الحاويات—يُطبّق Vapor بروتوكول TUS الإصدار 1.0.0.

TUS هو بروتوكول مفتوح لرفع الملفات القابل للاستئناف عبر HTTP. يضمن أن عمليات الرفع متعددة الغيغابايت (مثل صورة Ubuntu ISO بحجم 4 غيغابايت) يمكنها الصمود في وجه انقطاعات الشبكة دون الحاجة إلى البدء من الصفر.

نقاط نهاية TUS المدعومة

  • /api/v1/virtualmachines/isos/upload/*
  • /api/v1/containers/images/upload/*
  • /api/v1/docker/images/upload/*

مثال على التكامل (JavaScript)

إذا كنت تبني تكاملاً مخصصاً للواجهة الأمامية، فإننا نوصي بشدة باستخدام مكتبة tus-js-client الرسمية:

javascript
import * as tus from 'tus-js-client';

const upload = new tus.Upload(file, {
  endpoint: 'https://<vapor-ip>:7770/api/v1/virtualmachines/isos/upload',
  headers: {
    'Authorization': 'Bearer ' + token
  },
  chunkSize: 10 * 1024 * 1024, // 10MB chunks
  metadata: {
    filename: file.name,
    filetype: file.type
  },
  onError: (error) => console.error('Upload failed:', error),
  onProgress: (bytesUploaded, bytesTotal) => {
    const percentage = ((bytesUploaded / bytesTotal) * 100).toFixed(2);
    console.log(`${percentage}% uploaded`);
  },
  onSuccess: () => {
    console.log('Upload complete');
    // Call the finalization endpoint
    fetch(`/api/v1/virtualmachines/isos/upload/${upload.url.split('/').pop()}/complete`, {
      method: 'POST',
      headers: { 'Authorization': 'Bearer ' + token }
    });
  }
});

upload.start();

لمزيد من التفاصيل حول بروتوكول TUS، تفضل بزيارة tus.io.

عرض مرجع API الكامل

توثيق API التفاعلي الكامل يُولَّد ديناميكياً ويمكن الاطلاع عليه هنا:

عرض مرجع Vapor REST API