كيفية إجراء طلب GET في Node.js: دليل للمبتدئين

تعلم كيفية إجراء طلبات GET في Node.js باستخدام وحدة http المدمجة ومكتبة axios الشهيرة. كما تعلم كيفية التعامل مع بيانات الاستجابة بصيغ وسيناريوهات مختلفة.

Amir Hassan

Amir Hassan

18 أغسطس 2025

كيفية إجراء طلب GET في Node.js: دليل للمبتدئين

enterprise.banner.title

enterprise.banner.feature1

enterprise.banner.feature2

enterprise.banner.feature3

enterprise.banner.ctaB

هل تريد أن تتعلم كيفية إجراء طلبات GET في Node.js؟ إذا كانت الإجابة بنعم، فأنت في المكان الصحيح. في هذه المقالة، سأوضح لك كيفية استخدام وحدة http المدمجة ومكتبة axios الشهيرة لإجراء طلبات GET في Node.js. سأشرح أيضًا ما هي طلبات GET، ولماذا هي مهمة، وكيفية التعامل مع بيانات الاستجابة. بحلول نهاية هذه المقالة، ستكون قادرًا على إجراء طلبات GET في Node.js مثل المحترفين.

ما هو طلب GET؟

طلب GET هو أحد أنواع طلبات HTTP الأكثر شيوعًا. HTTP تعني بروتوكول نقل النصوص التشعبية، وهو البروتوكول القياسي للتواصل بين متصفحات الويب وخوادم الويب. طلبات HTTP هي رسائل ترسلها متصفحات الويب إلى خوادم الويب لطلب أو إرسال بيانات. استجابات HTTP هي رسائل ترسلها خوادم الويب مرة أخرى إلى متصفحات الويب لتسليم البيانات المطلوبة أو لتأكيد الإرسال.

طلب GET هو نوع من طلبات HTTP التي تطلب من خادم الويب إرسال مورد محدد. على سبيل المثال، عندما تقوم بكتابة عنوان URL في متصفح الويب الخاص بك، فإنك تقوم بإجراء طلب GET إلى خادم الويب ليقوم بإرسال صفحة الويب المرتبطة بهذا العنوان. يمكن أيضًا أن يتضمن طلب GET بعض معلمات الاستعلام، وهي أزواج من المفاتيح والقيم التي توفر معلومات إضافية أو تقوم بتصفية المورد المطلوب. على سبيل المثال، عندما تبحث عن شيء على Google، فإنك تقوم بإجراء طلب GET إلى خادم الويب Google مع بعض معلمات الاستعلام التي تحدد مصطلح البحث الخاص بك، واللغة، وخيارات أخرى.

لماذا تعتبر طلبات GET مهمة؟

طلبات GET مهمة لأنها الطريقة الرئيسية لاسترجاع البيانات من خوادم الويب. يمكنك استخدام طلبات GET للوصول إلى أنواع مختلفة من البيانات، مثل HTML، JSON، XML، الصور، الفيديوهات، وأكثر. يمكنك أيضًا استخدام طلبات GET للتفاعل مع واجهات برمجة التطبيقات على الويب، وهي واجهات تتيح لك الوصول إلى البيانات والخدمات من تطبيقات ويب أخرى. على سبيل المثال، يمكنك استخدام طلبات GET للحصول على معلومات الطقس من واجهة برمجة التطبيقات OpenWeatherMap، أو للحصول على معلومات حول الأفلام من واجهة برمجة التطبيقات IMDb، أو للحصول على صور للكلاب من واجهة برمجة التطبيقات Dog.

طلبات GET مهمة أيضًا لأنها سهلة الاستخدام والاختبار. يمكنك إجراء طلبات GET باستخدام أي متصفح ويب، دون الحاجة إلى أي أدوات أو مكتبات خاصة. يمكنك أيضًا استخدام أدوات مثل Postman أو Apidog لإجراء واختبار طلبات GET مع معلمات ورؤوس مختلفة. يمكنك أيضًا فحص بيانات الاستجابة والرؤوس باستخدام أدوات مطوري المتصفح أو واجهة الأداة.

ما هو NodeJs؟

Node.js هو بيئة تشغيل JavaScript تسمح لك بتشغيل كود JavaScript خارج متصفح الويب. تعتمد Node.js على محرك JavaScript Google Chrome V8، وتستخدم لبناء تطبيقات الويب، وخاصة التطبيقات التي تتطلب البيانات بشكل مكثف وفي الوقت الحقيقي. تحتوي Node.js أيضًا على مكتبة كبيرة من الوحدات والحزم التي يمكنك استخدامها لإضافة وظائف لمشاريعك. بعض فوائد Node.js هي:

NodeJs Website

كيفية إجراء طلب GET في Node.js باستخدام وحدة http؟

Node.js هو بيئة تشغيل JavaScript تسمح لك بتشغيل كود JavaScript خارج المتصفح. غالبًا ما يُستخدم Node.js لإنشاء خوادم الويب وتطبيقات الويب وواجهات برمجة التطبيقات على الويب. توفر Node.js أيضًا وحدة http مدمجة تسمح لك بإجراء طلبات واستجابات HTTP.

لإجراء طلب GET في Node.js باستخدام وحدة http، تحتاج إلى اتباع الخطوات التالية:

  1. استيراد وحدة http باستخدام وظيفة require.
  2. إنشاء كائن options يحتوي على المعلومات حول طلب GET، مثل اسم المضيف، ورقم المنفذ، والمسار، والرؤوس.
  3. استخدم طريقة http.get لإجراء طلب GET، مع تمرير كائن options كأول وسيط ودالة رد الاتصال كوسيط ثانٍ. سيتم تنفيذ دالة رد الاتصال عند تلقي الاستجابة، وستحتوي على كائن response كوسيط لها.
  4. استخدم كائن response للتعامل مع بيانات الاستجابة والرؤوس. كائن response هو نسخة من فئة http.IncomingMessage، التي تقوم بتنفيذ واجهة ReadableStream. وهذا يعني أنه يمكنك استخدام كائن response كتيار من البيانات، والاستماع إلى أحداث مثل data، end، وerror. يمكنك أيضًا استخدام خاصية response.statusCode للحصول على رمز حالة الاستجابة، وخاصية response.headers للحصول على رؤوس الاستجابة.
  5. استخدم طريقة response.on لتسجيل مستمعي الأحداث لكائن response. على سبيل المثال، يمكنك استخدام طريقة response.on('data', callback) للاستماع إلى حدث data، والذي سيتم إصدار عند تلقي جزء من البيانات. ستحتوي دالة رد الاتصال على كائن chunk كوسيط لها، وهو عبارة عن مخزن للبيانات. يمكنك استخدام طريقة chunk.toString() لتحويل المخزن إلى سلسلة، وإضافته إلى متغير لتخزين بيانات الاستجابة كاملة. يمكنك أيضًا استخدام طريقة response.on('end', callback) للاستماع إلى حدث end، والذي سيتم إصداره عند اكتمال الاستجابة. لن تحتوي دالة رد الاتصال على أي وسائط، ويمكنك استخدامها لأداء أي إجراءات نهائية، مثل تسجيل الدخول أو تحليل بيانات الاستجابة. يمكنك أيضًا استخدام طريقة response.on('error', callback) للاستماع إلى حدث error، والذي سيتم إصداره عند حدوث خطأ أثناء الاستجابة. ستحتوي دالة رد الاتصال على كائن error كوسيط لها، ويمكنك استخدامه للتعامل مع الخطأ، مثل تسجيله أو رميه.

إليك مثال عن كيفية إجراء طلب GET في Node.js باستخدام وحدة http:

// استيراد وحدة http
const http = require('http');

// إنشاء كائن options
const options = {
  hostname: 'api.openweathermap.org',
  port: 80,
  path: '/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY',
  headers: {
    'User-Agent': 'Node.js'
  }
};

// إجراء طلب GET
http.get(options, (response) => {
  // تهيئة متغير لتخزين بيانات الاستجابة
  let data = '';

  // الاستماع إلى حدث data
  response.on('data', (chunk) => {
    // إضافة الجزء إلى المتغير data
    data += chunk.toString();
  });

  // الاستماع إلى حدث end
  response.on('end', () => {
    // تسجيل رمز الحالة والرؤوس
    console.log(`Status code: ${response.statusCode}`);
    console.log(`Headers: ${JSON.stringify(response.headers)}`);

    // تحليل البيانات كـ JSON
    const weather = JSON.parse(data);

    // تسجيل معلومات الطقس
    console.log(`City: ${weather.name}`);
    console.log(`Temperature: ${weather.main.temp}`);
    console.log(`Description: ${weather.weather[0].description}`);
  });

  // الاستماع إلى حدث error
  response.on('error', (error) => {
    // رمي الخطأ
    throw error;
  });
});

كيفية إجراء طلب GET في Node.js باستخدام مكتبة axios؟

وحدة http هي وحدة منخفضة المستوى توفر الوظائف الأساسية لإجراء طلبات واستجابات HTTP. ومع ذلك، إذا كنت ترغب في استخدام وحدة ذات مستوى أعلى وأكثر سهولة، يمكنك استخدام مكتبة axios. Axios هي مكتبة شهيرة وقوية تتيح لك إجراء طلبات HTTP والتعامل مع الاستجابات باستخدام الوعود (promises) وترميز async/await. تدعم Axios أيضًا ميزات مثل المكونات الإضافية (interceptors)، المحولات (transformers)، عمليات التأخير (timeouts)، رموز الإلغاء (cancel tokens)، وأكثر.

لإجراء طلب GET في Node.js باستخدام مكتبة axios، تحتاج إلى اتباع الخطوات التالية:

  1. تثبيت مكتبة axios باستخدام أمر npm: npm install axios.
  2. استيراد مكتبة axios باستخدام وظيفة require.
  3. استخدم طريقة axios.get لإجراء طلب GET، مع تمرير عنوان URL للمورد كأول وسيط وكائن config اختياري كوسيط ثانٍ. يمكن أن يحتوي كائن config على معلومات حول طلب GET، مثل الرؤوس والمعلمات والوقت المستغرق، وأكثر. ستعيد طريقة axios.get وعدًا (promise)، والذي سيحل إلى كائن response أو يرفض إلى كائن error.
  4. استخدم طريقة then للتعامل مع الوعد المحل، مع تمرير دالة رد الاتصال كأول وسيط. ستحتوي دالة رد الاتصال على كائن response كوسيط لها، والذي يحتوي على بيانات الاستجابة والحالة والرؤوس، وأكثر. يمكنك استخدام خاصية response.data للوصول إلى بيانات الاستجابة، وخاصية response.status للوصول إلى رمز حالة الاستجابة. يمكنك أيضًا استخدام طريقة catch للتعامل مع الوعد المرفوض، مع تمرير دالة رد الاتصال كأول وسيط. ستحتوي دالة رد الاتصال على كائن error كوسيط لها، والذي يحتوي على رسالة الخطأ، والرمز، والطلب، والاستجابة. يمكنك استخدام خاصية error.response للوصول إلى كائن الاستجابة، وخاصية error.request للوصول إلى كائن الطلب.
  5. بدلاً من ذلك، يمكنك استخدام ترميز async/await لإجراء طلب GET والتعامل مع الاستجابة. للقيام بذلك، تحتاج إلى استخدام الكلمة الرئيسية async قبل الدالة التي تحتوي على طلب GET، والكلمة الرئيسية await قبل طريقة axios.get. سيسمح لك ذلك بكتابة كود غير متزامن بشكل متزامن، وتعيين كائن response إلى متغير. يمكنك بعد ذلك استخدام كتلة try/catch للتعامل مع أي أخطاء قد تحدث أثناء طلب GET.

إليك مثال عن كيفية إجراء طلب GET في Node.js باستخدام مكتبة axios:

// استيراد مكتبة axios
const axios = require('axios');

// إجراء طلب GET باستخدام طريقة then
axios.get('http://api.openweathermap.org/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY', {
  headers: {
    'User-Agent': 'Node.js'
  }
}).then((response) => {
  // تسجيل رمز الحالة والرؤوس
  console.log(`Status code: ${response.status}`);
  console.log(`Headers: ${JSON.stringify(response.headers)}`);

  // تسجيل معلومات الطقس
  console.log(`City: ${response.data.name}`);
  console.log(`Temperature: ${response.data.main.temp}`);
  console.log(`Description: ${response.data.weather[0].description}`);
}).catch((error) => {
  // تسجيل رسالة الخطأ والرمز
  console.log(`Error message: ${error.message}`);
  console.log(`Error code: ${error.code}`);

  // تسجيل حالة الاستجابة وبياناتها إذا كانت متاحة
  if (error.response) {
    console.log(`Response status: ${error.response.status}`);
    console.log(`Response data: ${JSON.stringify(error.response.data)}`);
  }

  // تسجيل طريقة الطلب ومساره إذا كانت متاحة
  if (error.request) {
    console.log(`Request method: ${error.request.method}`);
    console.log(`Request path: ${error.request.path}`);
  }
});

// إجراء طلب GET باستخدام ترميز async/await
async function getWeather() {
  try {
    // انتظار طلب GET وتعيين كائن الاستجابة إلى متغير
    const response = await axios.get('http://api.openweathermap.org/data/2.5/weather?q=Los%20Angeles&appid=YOUR_API_KEY', {
      headers: {
        'User-Agent': 'Node.js'
      }
    });

    // تسجيل رمز الحالة والرؤوس
    console.log(`Status code: ${response.status}`);
    console.log(`Headers: ${JSON.stringify(response.headers)}`);

    // تسجيل معلومات الطقس
    console.log(`City: ${response.data.name}`);
    console.log(`Temperature: ${response.data.main.temp}`);
    console.log(`Description: ${response.data.weather[0].description}`);
  } catch (error) {
    // تسجيل رسالة الخطأ والرمز
    console.log(`Error message: ${error.message}`);
    console.log(`Error code: ${error.code}`);

    // تسجيل حالة الاستجابة وبياناتها إذا كانت متاحة
    if (error.response) {
      console.log(`Response status: ${error.response.status}`);
      console.log(`Response data: ${JSON.stringify(error.response.data)}`);
    }

    // تسجيل طريقة الطلب ومساره إذا كانت متاحة
    if (error.request) {
      console.log(`Request method: ${error.request.method}`);
      console.log(`Request path: ${error.request.path}`);
    }
  }
}

// استدعاء دالة getWeather
getWeather();

كيفية التعامل مع بيانات الاستجابة في Node.js؟

بمجرد إجراء طلب GET في Node.js واستلام الاستجابة، قد ترغب في القيام بشيء ما مع بيانات الاستجابة. على سبيل المثال، قد ترغب في عرض البيانات على وحدة التحكم، أو حفظ البيانات في ملف، أو تحليل البيانات كتشفير JSON أو XML، أو استخدام البيانات لغرض آخر.

اعتمادًا على نوع وهئية بيانات الاستجابة، قد تحتاج إلى استخدام طرق ووحدات مختلفة للتعامل مع البيانات. إليك بعض السيناريوهات الشائعة وكيفية التعامل معها:

كيفية اختبار طلب GET HTTP في NodeJs باستخدام Apidog؟

لاختبار طلب GET HTTP باستخدام Apidog، تحتاج إلى اتباع الخطوات البسيطة التالية:

  1. فتح Apidog والنقر على زر "طلب جديد" لإنشاء طلب جديد.
Select new request

2. اختر "GET" كطريقة الطلب.

Select get method

3. أدخل عنوان URL لنقطة نهاية واجهة برمجة التطبيقات

Enter the URL op the API

ثم انقر على زر "إرسال" لإرسال الطلب إلى واجهة برمجة التطبيقات.

Send the request and analyse the answer

كما ترى، يُظهر لك Apidog عنوان URL، والمعلمات، والرؤوس، وجسد الطلب، وحالة الاستجابة، والرؤوس، وجسد الاستجابة. يمكنك أيضًا رؤية وقت الاستجابة، والحجم، وصيغة الطلب والاستجابة، ومقارنتها مع واجهات برمجة التطبيقات المختلفة على الويب.

الخاتمة

في هذه المقالة، أظهرت لك كيفية إجراء طلبات GET في Node.js باستخدام وحدة http ومكتبة axios. كما أظهرت لك كيفية التعامل مع بيانات الاستجابة في صيغ وسيناريوهات مختلفة. آمل أن تكون قد تعلمت شيئًا مفيدًا واستمتعت بقراءة هذه المقالة.

شكرًا لقراءتك وبالتوفيق في البرمجة!

ممارسة تصميم API في Apidog

اكتشف طريقة أسهل لبناء واستخدام واجهات برمجة التطبيقات

كيفية إجراء طلب GET في Node.js: دليل للمبتدئين