عميل HTTP لجافا سكريبت (Node.js): أفضل المكتبات للعمل مع API

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

عميل HTTP لجافا سكريبت (Node.js): أفضل المكتبات للعمل مع الشبكة



نادرًا ما يخلو التطوير الحديث على Node.js من التفاعل مع الخدمات الخارجية. سواء كانت REST API، نقاط نهاية GraphQL، أو تدفق البيانات - ستحتاج إلى عميل HTTP موثوق. في هذه المقالة، سنستعرض أفضل المكتبات لتنفيذ طلبات HTTP في بيئة Node.js، وميزاتها وأمثلة على استخدامها.



1. Axios - الخيار الشامل

Axios هو أشهر عميل HTTP لـ Node.js والمتصفحات. يعتمد على الـ Promises، ويدعم المعترضات (interceptors)، والتحويل التلقائي لـ JSON، وإلغاء الطلبات.



التثبيت

npm install axios


مثال لطلب GET

const axios = require('axios');

async function getUsers() { try { const response = await axios.get('https://jsonplaceholder.typicode.com/users'); console.log(response.data); } catch (error) { console.error('خطأ:', error.message); }}

getUsers();


الميزات:

  • دعم CancelToken لإلغاء الطلبات
  • معالجة تلقائية لأخطاء HTTP (الحالات 4xx و 5xx)
  • يعمل على الخادم وفي المتصفح
  • دعم تقدم التحميل/التنزيل


2. Got - الأداء والمرونة

Got مكتبة خفيفة وسريعة، مصممة خصيصًا لـ Node.js. تقدم واجهة برمجة تطبيقات غنية وأداء ممتاز بفضل استخدام وحدات http و https مباشرة.



التثبيت

npm install got


مثال لطلب POST

const got = require('got');

async function createPost() { try { const response = await got.post('https://jsonplaceholder.typicode.com/posts', { json: { title: 'منشور جديد', body: 'محتوى المنشور', userId: 1 }, responseType: 'json' }); console.log(response.body); } catch (error) { console.error('خطأ:', error.message); }}

createPost();


الميزات:

  • دعم التدفقات (streams) والترقيم (pagination)
  • دعم مدمج لإعادة المحاولة (retry)
  • العمل مع الكوكيز والتخزين المؤقت
  • دعم HTTP/2 (عبر http2-wrapper)


3. Node.js Fetch API - المعيار الأصلي

بدءًا من Node.js 18، أصبح Fetch API وحدة مدمجة (متاحة عالميًا). هذا تطبيق لنفس الـ API الموجود في المتصفحات، مما يبسط الكود الشامل.



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

async function fetchData() {  try {    const response = await fetch('https://jsonplaceholder.typicode.com/posts/1');    if (!response.ok) throw new Error('خطأ HTTP: ' + response.status);    const data = await response.json();    console.log(data);  } catch (error) {    console.error('خطأ:', error.message);  }}

fetchData();


الميزات:

  • لا يتطلب تثبيتًا - مدمج في Node.js 18+
  • API قياسي، مألوف لمطوري الواجهة الأمامية
  • دعم AbortController لإلغاء الطلبات
  • إمكانيات محدودة مقارنة بـ Axios/Got (مثل عدم وجود معترضات)


4. undici - عميل HTTP/1.1 عالي الأداء

undici هو عميل HTTP سريع وحديث، يشكل الأساس لـ Fetch المدمج في Node.js. تم تحسينه لتحقيق أقصى إنتاجية.



التثبيت

npm install undici


مثال لطلب

const { request } = require('undici');

async function fetchWithUndici() { try { const { statusCode, body } = await request('https://jsonplaceholder.typicode.com/users'); const data = await body.json(); console.log('الحالة:', statusCode); console.log('ال

توصيات