أفضل 4 طرق لإجراء طلبات POST في Node.js

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

Amir Hassan

Amir Hassan

16 أغسطس 2025

أفضل 4 طرق لإجراء طلبات POST في Node.js

Apidog للمؤسسات

النشر على الخوادم المحلية

SSO و RBAC

متوافق مع SOC 2

استكشف Apidog للمؤسسات

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

button

ما هو طلب HTTP POST في NodeJS؟

يستخدم طلب HTTP POST في Node.js لإرسال البيانات إلى الخادم لإنشاء أو تحديث مورد. طلبات POST تُستخدم عادةً عند إرسال بيانات النموذج، تحميل الملفات، أو إرسال بيانات لتخزينها في قاعدة بيانات.

في Node.js، يمكنك إجراء طلب POST باستخدام وحدة http المدمجة أو مكتبة طرف ثالث مثل Axios. البيانات المرسلة مع الطلب تتضمن في جسم الطلب. يمكن للخادم بعد ذلك الوصول إلى هذه البيانات ومعالجتها لأداء الوظيفة المطلوبة.

يوفر Node.js نموذج إدخال وإخراج غير متزامن وبدون حظر يجعل التعامل مع التطبيقات التي تعتمد على البيانات والوقت الحقيقي فعالًا. توفر له القدرة على التعامل مع طلبات POST ومعالجة البيانات خيار شائع لبناء واجهات برمجة التطبيقات على الويب، وتطبيقات الدردشة في الوقت الحقيقي، وأنواع أخرى من تطبيقات الخادم.

NodeJs Website

كيفية إرسال طلب POST في Node.js؟

الآن، سنظهر لك عدة طرق لإرسال وإجراء طلبات POST في Node.js، بما في ذلك وحدة HTTP ومكتبة Axios. يمكنك اختيار الطريقة التي تناسب متطلبات مشروعك والتفضيلات.

1. إرسال طلب POST في Node.js باستخدام وحدة http

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

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

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

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

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

// إنشاء كائن خيارات
const options = {
  hostname: 'jsonplaceholder.typicode.com',
  port: 80,
  path: '/posts',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'User-Agent': 'Node.js'
  }
};

// إنشاء كائن البيانات
const data = {
  title: 'مرحبًا، العالم!',
  body: 'هذه هي منشور اختبار',
  userId: 1
};

// تحويل كائن البيانات إلى سلسلة
const dataString = JSON.stringify(data);

// تحديث كائن الخيارات مع طول البيانات
options.headers['Content-Length'] = dataString.length;

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

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

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

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

    // تسجيل معلومات المنشور
    console.log(`Post ID: ${post.id}`);
    console.log(`Post Title: ${post.title}`);
    console.log(`Post Body: ${post.body}`);
    console.log(`Post User ID: ${post.userId}`);
  });

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

// كتابة البيانات إلى كائن الطلب
request.write(dataString);

// إنهاء كائن الطلب
request.end();

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

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

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

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

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

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

// إنشاء كائن البيانات
const data = {
  title: 'مرحبًا، العالم!',
  body: 'هذه هي منشور اختبار',
  userId: 1
};

// إجراء طلب POST باستخدام طريقة then
axios.post('http://jsonplaceholder.typicode.com/posts', data, {
  headers: {
    'Content-Type': 'application/json',
    'User-Agent': 'Node.js'
  }
}).then((response) => {
  // تسجيل كود الحالة والرؤوس
  console.log(`Status code: ${response.status}`);
  console.log(`Headers: ${JSON.stringify(response.headers)}`);

  // تسجيل معلومات المنشور
  console.log(`Post ID: ${response.data.id}`);
  console.log(`Post Title: ${response.data.title}`);
  console.log(`Post Body: ${response.data.body}`);
  console.log(`Post User ID: ${response.data.userId}`);
}).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}`);
  }
});

// إجراء طلب POST باستخدام نمط async/await
async function createPost() {
  try {
    // انتظر طلب POST وعيّن كائن الاستجابة إلى متغير
    const response = await axios.post('http://jsonplaceholder.typicode.com/posts', data, {
      headers: {
        'Content-Type': 'application/json',
        'User-Agent': 'Node.js'
      }
    });

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

    // تسجيل معلومات المنشور
    console.log(`Post ID: ${response.data.id}`);
    console.log(`Post Title: ${response.data.title}`);
    console.log(`Post Body: ${response.data.body}`);
    console.log(`Post User ID: ${response.data.userId}`);
  } 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}`);
    }
  }
}

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

3. إرسال واستقبال البيانات في Node.js

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

للتعامل مع أنواع مختلفة من البيانات، ستحتاج إلى أساليب ووحدات مختلفة:

  1. بيانات JSON: إذا كانت بياناتك كائنًا بسيطًا أو مصفوفة، يمكنك تحويلها إلى سلسلة JSON باستخدام JSON.stringify(). تنشئ هذه الطريقة سلسلة تحتوي على أزواج مفاتيح وقيم ومصفوفات، مما يجعل من السهل إرسال واستقبال البيانات. للعمل مع استجابات JSON، يمكنك استخدام JSON.parse() لتحويل الاستجابة مرة أخرى إلى كائن JavaScript أو مصفوفة.
  2. بيانات الملفات: عند التعامل مع الملفات، يمكنك استخدام مكتبة form-data لإنشاء كائن بيانات النموذج وإلحاق الملف به. تحاكي هذه المكتبة سلوك نموذج HTML، مما يسمح لك بإرسال بيانات نصية وملف. ستحتاج إلى تثبيت مكتبة form-data باستخدام npm ثم استخدامها لإنشاء وإرسال كائن بيانات النموذج.
  3. التيارات (Streams): للتعامل مع البيانات المتدفقة، يمكنك استخدام الوحدة المدمجة stream. تتيح لك التيارات التعامل مع بيانات كبيرة أو متواصلة دون تحميلها بالكامل في الذاكرة.

يمكنك إنشاء تيارات قابلة للقراءة، وقابلة للكتابة، أو تحويل حسب احتياجاتك. تعد التيارات مفيدة للتعامل مع البيانات الصوتية، والفيديو، أو بيانات الشبكة، ويمكنك توصيل البيانات من تيار إلى آخر للمعالجة أو الإرسال إلى الخادم.

4. استخدام Apidog لاختبار طلب POST في NodeJs

Apidog هي أداة قوية لاختبار واجهات برمجة التطبيقات. تتيح لك إنشاء وحفظ طلبات واجهة برمجة التطبيقات، تنظيمها في مجموعات، ومشاركتها مع فريقك.

button

إليك كيفية استخدام Apidog لاختبار طلب POST الخاص بك:

  1. فتح Apidog وإنشاء طلب جديد.
Select new request

2. تعيين طريقة الطلب إلى POST.

Select Post request

3. أدخل عنوان URL للمورد الذي تريد تحديثه. أضف أي رؤوس أو معاملات إضافية تريد تضمينها ثم انقر على زر “إرسال” لإرسال الطلب.

4. تحقق من أن الاستجابة هي ما كنت تتوقعه.

Verify the response

الخاتمة

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

button

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

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