انتقل إلى المحتوى الرئيسي

طلب http

تم تصميم عقدة http request لأداء طلبات HTTP إلى خدمات الويب أو واجهات برمجة التطبيقات الخارجية. تدعم هذه العقدة عدة طرق HTTP، وأنواع البيانات، والمصادقة، وإدارة مرنة للطلبات والاستجابات.


إعدادات عقدة http request

IMG2

1. الاسم

حقل لتحديد اسم العقدة.
يتم عرض الاسم في مساحة العمل ويساعد في التعرف بسهولة على العقدة.
إذا ترك فارغًا، سيتم تسمية العقدة بـ http request.

مثال:

  • اسم العقدة: الحصول على بيانات الطقس

2. الطريقة

طريقة HTTP التي ستستخدم في الطلب. يعتمد اختيار الطريقة على نوع العملية التي يجب تنفيذها.

الطرق المتاحة:

  • GET: استرجاع البيانات.
  • POST: إرسال البيانات.
  • PUT: تحديث البيانات.
  • DELETE: حذف البيانات.
  • PATCH: تحديث البيانات جزئيًا.
  • HEAD: استرجاع رؤوس الاستجابة.
  • OPTIONS: الحصول على معلومات حول واجهة برمجة التطبيقات.

مثال:

  • الطريقة: POST

3. الرابط

حقل لتحديد عنوان URL ثابت سيتم إرسال الطلب إليه.
إذا كان يجب تعيين العنوان ديناميكيًا، يمكن تمريره في msg.url.

مثال:

  • الرابط: https://api.example.com/data

4. البيانات

يحدد كيفية إضافة البيانات المدخلة إلى طلب HTTP. الخيارات المتاحة هي:

  1. تجاهل:
    لن يتم استخدام البيانات المدخلة في الطلب. سيتم تجاهل msg.payload، إذا كانت موجودة.

    مثال:
    إذا كانت msg.payload تحتوي على كائن JSON، فلن يتم تضمينه في الطلب.


  1. إضافته إلى معلمات الاستعلام:
    سيتم تحويل البيانات من msg.payload إلى معلمات استعلام وإضافتها إلى عنوان URL.

    مثال:
    إذا كانت msg.payload تحتوي على:

    {
    "key1": "value1",
    "key2": "value2"
    }

    إذا تم تحديد الرابط كـ http://example.com/api، سيكون الطلب النهائي:
    GET http://example.com/api?key1=value1&key2=value2.


  1. إرسالها كجسم الطلب:
    سيتم إرسال البيانات من msg.payload في جسم الطلب. هذه الخيار مناسب لطرق مثل POST وPUT وPATCH، حيث يتم غالبًا إرسال البيانات في الجسم.

    مثال:
    إذا كانت msg.payload تحتوي على:

    {
    "name": "جون دو",
    "email": "john.doe@example.com"
    }

    إذا كانت طريقة الطلب هي POST، سيتم إرسال البيانات في جسم الطلب مع المحتوى المناسب.

5. الإرجاع

يحدد التنسيق الذي ستقوم العقدة بمعالجة الاستجابة من الخادم به.

الخيارات:

  • سلسلة UTF-8: يتم تحويل الاستجابة إلى سلسلة (افتراضي).
  • Buffer: يتم إرجاع الاستجابة ككائن Buffer (مفيد للبيانات الثنائية مثل الصور أو الملفات).
  • JSON: إذا كانت استجابة الخادم بتنسيق JSON، يتم تحويلها تلقائيًا إلى كائن JavaScript.

مثال:

  • إذا تم اختيار JSON، ستكون الاستجابة:
    {"status": "ok", "value": 42}
    يتم تحويلها إلى:
    msg.payload = { status: "ok", value: 42 };

6. المصادقة

تدعم العقدة آليات المصادقة المدمجة.

المصادقة الأساسية

  • اسم المستخدم: اسم المستخدم.
  • كلمة المرور: كلمة المرور.

رمز الوصول

  • الرمز: رمز الوصول.

التجزئة

  • اسم المستخدم: اسم المستخدم.
  • كلمة المرور: كلمة المرور.

بيانات المدخلات

تقبل عقدة http request كائن رسالة msg مع المعلمات التالية:

  1. msg.url: عنوان URL للطلب (إذا لم يتم تحديده في إعدادات العقدة).
  2. msg.method: طريقة HTTP (إذا لم يتم تعيينها في إعدادات العقدة).
  3. msg.payload: جسم الطلب (يستخدم لطرق POST وPUT وPATCH).
  4. msg.headers: رؤوس طلب HTTP (كائن).

بيانات المخرجات

ترجع العقدة كائن msg مع معلومات حول الطلب المنفذ:

  1. msg.payload: بيانات الاستجابة من الخادم.
  2. msg.statusCode: رمز الحالة HTTP للاستجابة (مثل 200 أو 404).
  3. msg.headers: رؤوس الاستجابة.
  4. msg.responseUrl: عنوان URL الذي تم إرسال الطلب إليه.
  5. msg.error: وصف الخطأ (إذا فشل الطلب).

أمثلة الاستخدام

المثال 1: إجراء طلب GET

إعدادات العقدة:

  • الطريقة: GET
  • عنوان URL: https://api.weatherapi.com/v1/current.json?key=API_KEY&q=London

التدفق:

[inject] ---> [http request] ---> [debug]

النتيجة: ستعيد العقدة JSON مع حالة الطقس الحالية.


المثال 2: إرسال البيانات عبر POST

إعدادات العقدة:

  • الطريقة: POST
  • عنوان URL: https://api.example.com/devices
  • البيانات: JSON

التدفق:

[function] ---> [http request] ---> [debug]

الكود في عقدة function:

msg.payload = {
deviceId: "sensor123",
status: "active"
};
msg.headers = { "Content-Type": "application/json" };
return msg;

النتيجة: سيتم إرسال البيانات، وستعيد العقدة استجابة الخادم.


المثال 3: عنوان URL ديناميكي ومصادقة

إعدادات العقدة:

  • عنوان URL: (اتركه فارغًا)

التدفق:

[function] ---> [http request] ---> [debug]

الكود في عقدة function:

msg.url = "https://api.example.com/user/123";
msg.headers = { Authorization: "Bearer YOUR_TOKEN" };
return msg;

النتيجة: ستقوم العقدة بإجراء طلب إلى عنوان URL المحدد مع رمز المصادقة.