NDJSON 101: البث عبر نقاط نهاية HTTP

@apidog

@apidog

18 يونيو 2025

NDJSON 101: البث عبر نقاط نهاية HTTP

في عالم اليوم المدفوع بالبيانات، فإن نقل مجموعات البيانات الكبيرة بكفاءة بين الأنظمة أمر حيوي. بينما أصبح JSON هو التنسيق القياسي لتبادل البيانات، فإنه يواجه قيودًا عند التعامل مع كميات كبيرة من البيانات أو سيناريوهات البث. وهنا يأتي دور NDJSON (JSON مفصول بأسطر جديدة) - تنسيق بسيط ولكنه قوي يتميز بتغيير كيفية بث البيانات عبر اتصالات HTTP. في هذه المقالة، سنستعرض ما هو NDJSON، كيف يختلف عن JSON القياسي، وكيف يمكن أن تساعدك Apidog في العمل مع نقاط نهاية بث NDJSON.

💡
نصيحة احترافية: اختبر نقاط نهاية بث NDJSON بسهولة مع ميزة التصور في الوقت الحقيقي من Apidog. على عكس الأدوات التقليدية، تعرض Apidog كل كائن JSON عند وصوله، مما يتيح لك فحص بيانات البث بشكل فوري - مثالي لتصحيح الأخطاء في مجموعات البيانات الكبيرة دون كتابة كود تحليلي مخصص.
زر

ما هو NDJSON؟

NDJSON (JSON مفصول بأسطر جديدة) هو تنسيق يخزن البيانات المهيكلة كمتتالية من كائنات JSON، حيث يتم وضع كل كائن في سطره الخاص، مفصولًا بحرف سطر جديد (\n). يُعرف أيضًا باسم JSON Lines (JSONL) في بعض السياقات.

إليك مثال بسيط على NDJSON:

{"id": 1, "name": "أليس", "score": 95}
{"id": 2, "name": "بوب", "score": 87}
{"id": 3, "name": "تشارلي", "score": 92}

كل سطر هو كائن JSON صالح وكامل، مما يجعل من السهل معالجة سجل واحد في كل مرة دون تحميل مجموعة البيانات بالكامل في الذاكرة.

NDJSON مقابل JSON التقليدي: الاختلافات الرئيسية

يخدم كل من JSON التقليدي وNDJSON أغراضًا مختلفة ولديه خصائص مميزة:

الميزة JSON التقليدي NDJSON
البنية وثيقة كاملة واحدة عدة كائنات JSON مستقلة
التحليل يجب تحميل الوثيقة بالكامل يمكن معالجة سطر بسطر
البث غير مصمم للبث مثالي للبث
استخدام الذاكرة يتطلب وثيقة كاملة في الذاكرة يعالج سطرًا واحدًا في كل مرة
حجم الملف مقيد بالذاكرة المتاحة غير محدود تقريبًا

الميزة الرئيسية لـ NDJSON هي قدرته على المعالجة بشكل تدريجي. مع JSON التقليدي، تحتاج إلى تحليل الملف بالكامل قبل الوصول إلى أي بيانات. مع NDJSON، يمكنك قراءة ومعالجة سطر واحد في كل مرة، مما يجعله مثاليًا لـ:

لماذا استخدام NDJSON لبث HTTP؟

يسمح بث HTTP للخوادم بإرسال البيانات إلى العملاء بشكل تدريجي بدلاً من الانتظار حتى تصبح الاستجابة كاملة. NDJSON مناسب بشكل خاص لبث HTTP لأنه:

  1. البساطة: كل سطر هو كائن JSON كامل وصالح
  2. التوافق: يعمل مع محللات JSON الحالية
  3. المعالجة التدريجية: يمكن للعملاء معالجة البيانات عند وصولها
  4. كفاءة الذاكرة: لا حاجة لتخزين الاستجابة كاملة
  5. سهولة القراءة البشرية: سهل الفحص وتصحيح الأخطاء

كيفية بث NDJSON عبر نقاط نهاية HTTP

تنفيذ بث NDJSON عبر HTTP بسيط. إليك كيف يعمل على جانبي الخادم والعميل:

تنفيذ جانب الخادم

لإنشاء نقطة نهاية HTTP تقوم ببث NDJSON:

قم بتعيين الرؤوس المناسبة:

Content-Type: application/x-ndjson
Transfer-Encoding: chunked

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

// مثال على Node.js
app.get('/api/data/stream', (req, res) => {
  res.setHeader('Content-Type', 'application/x-ndjson');
  res.setHeader('Transfer-Encoding', 'chunked');
  
  // بث البيانات عند توفرها
  dataSource.on('data', (item) => {
    res.write(JSON.stringify(item) + '\n');
  });
  
  dataSource.on('end', () => {
    res.end();
  });
});

معالجة جانب العميل

على جانب العميل، تحتاج إلى:

  1. إجراء طلب HTTP إلى نقطة النهاية الباثة
  2. معالجة الاستجابة بشكل تدريجي، سطر بسطر
  3. تحليل كل سطر ككائن JSON

إليك مثال بسيط بلغة JavaScript:

async function consumeNdjsonStream(url) {
  const response = await fetch(url);
  const reader = response.body.getReader();
  const decoder = new TextDecoder();
  let buffer = '';
  
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    
    buffer += decoder.decode(value, { stream: true });
    const lines = buffer.split('\n');
    buffer = lines.pop(); // الاحتفاظ بالسطر الأخير غير المكتمل
    
    for (const line of lines) {
      if (line.trim() === '') continue;
      const jsonObject = JSON.parse(line);
      processData(jsonObject); // قم بعمل شيء مع البيانات
    }
  }
}

الاستخدامات الشائعة لبث NDJSON

بث NDJSON قيم بشكل خاص في السيناريوهات مثل:

اختبار نقاط نهاية NDJSON مع Apidog

Apidog هي منصة تطوير API الشاملة التي تقدم دعمًا مدمجًا لاختبار وتصحيح نقاط نهاية بث NDJSON. إليك كيف تسهل Apidog العمل مع NDJSON:

1. تصور تدفق الوقت الحقيقي

تعرض واجهة Apidog NDJSON الاستجابات في الوقت الحقيقي، مبينة كل كائن JSON عند وصوله من الخادم. هذا يجعل من السهل مراقبة بيانات البث دون الحاجة لكتابة كود مخصص.

2. التحليل والتنسيق التلقائي

يقوم Apidog تلقائيًا بتحليل كل سطر من NDJSON عند وصوله، وتنسيقه لسهولة القراءة مع الحفاظ على طبيعة البث لاستجابة.

3. تكوين الطلب

يجعل Apidog من السهل تكوين الرؤوس والمعلمات الضرورية لطلبات بث NDJSON، مما يضمن التواصل السليم مع نقاط نهاية البث الخاصة بك.

دليل خطوة بخطوة لبث نقاط نهاية HTTP التي تعيد NDJSON

لاختبار نقطة نهاية بث NDJSON في Apidog:

الخطوة 1: إنشاء طلب HTTP جديد

إنشاء طلب API جديد باستخدام Apidog

الخطوة 2: تعيين طريقة الطلب

تحديد طريقة طلب HTTP في Apidog

الخطوة 3: أدخل URL نقطة النهاية الباثة الخاصة بك

إدخال URL طلب نقطة النهاية في Apidog

الخطوة 4: إرسال الطلب

إرسال طلب نقطة النهاية باستخدام Apidog

الخطوة 5: عرض نتيجة الاختبار

راقب كيف تعرض Apidog استجابة NDJSON المتدفقة في الوقت الحقيقي

Ollama

يمكنك اختيار دمج الرسائل التي تم إرجاعها من NDJSON في رد كامل. تعرّف على المزيد هنا.

الخلاصة

يوفر NDJSON حلاً أنيقًا لبث البيانات المهيكلة عبر HTTP، حيث يجمع بين مرونة JSON وكفاءة المعالجة سطر بسطر. سواء كنت تبني تحليلات في الوقت الحقيقي، أو أنظمة معالجة السجلات، أو وظائف تصدير البيانات، يقدم NDJSON نهجًا بسيطًا ولكنه قوي للتعامل مع بيانات البث.

مع دعم Apidog لبث NDJSON، يصبح اختبار وتصحيح هذه النقاط أسهل بكثير. يمكنك تصور، وفحص، والتحقق من بيانات البث الخاصة بك دون الحاجة لكتابة كود مخصص، مما يسرع من عملية التطوير الخاصة بك ويضمن عمل واجهات برمجة التطبيقات الخاصة بك كما هو متوقع.

ابدأ استكشاف بث NDJSON مع Apidog اليوم واستمتع بقوة معالجة البيانات في الوقت الحقيقي في تطبيقاتك!

زر

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

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