في عالم اليوم المدفوع بالبيانات، فإن نقل مجموعات البيانات الكبيرة بكفاءة بين الأنظمة أمر حيوي. بينما أصبح JSON هو التنسيق القياسي لتبادل البيانات، فإنه يواجه قيودًا عند التعامل مع كميات كبيرة من البيانات أو سيناريوهات البث. وهنا يأتي دور NDJSON (JSON مفصول بأسطر جديدة) - تنسيق بسيط ولكنه قوي يتميز بتغيير كيفية بث البيانات عبر اتصالات HTTP. في هذه المقالة، سنستعرض ما هو NDJSON، كيف يختلف عن JSON القياسي، وكيف يمكن أن تساعدك Apidog في العمل مع نقاط نهاية بث NDJSON.
ما هو 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 لأنه:
- البساطة: كل سطر هو كائن JSON كامل وصالح
- التوافق: يعمل مع محللات JSON الحالية
- المعالجة التدريجية: يمكن للعملاء معالجة البيانات عند وصولها
- كفاءة الذاكرة: لا حاجة لتخزين الاستجابة كاملة
- سهولة القراءة البشرية: سهل الفحص وتصحيح الأخطاء
كيفية بث 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();
});
});
معالجة جانب العميل
على جانب العميل، تحتاج إلى:
- إجراء طلب HTTP إلى نقطة النهاية الباثة
- معالجة الاستجابة بشكل تدريجي، سطر بسطر
- تحليل كل سطر ككائن 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 قيم بشكل خاص في السيناريوهات مثل:
- تحليلات في الوقت الحقيقي: بث بيانات الأحداث للمعالجة الفورية
- تجميع السجلات: إرسال سجلات التطبيقات باستمرار إلى أنظمة المراقبة
- تصدير البيانات: نقل مجموعات بيانات كبيرة دون قيود على الذاكرة
- تطبيقات IoT: معالجة بيانات المستشعرات عند إنشائها
- تغذيات النشاط: تسليم أحداث وسائل التواصل الاجتماعي أو التطبيقات في الوقت الحقيقي
اختبار نقاط نهاية NDJSON مع Apidog
Apidog هي منصة تطوير API الشاملة التي تقدم دعمًا مدمجًا لاختبار وتصحيح نقاط نهاية بث NDJSON. إليك كيف تسهل Apidog العمل مع NDJSON:
1. تصور تدفق الوقت الحقيقي
تعرض واجهة Apidog NDJSON الاستجابات في الوقت الحقيقي، مبينة كل كائن JSON عند وصوله من الخادم. هذا يجعل من السهل مراقبة بيانات البث دون الحاجة لكتابة كود مخصص.
2. التحليل والتنسيق التلقائي
يقوم Apidog تلقائيًا بتحليل كل سطر من NDJSON عند وصوله، وتنسيقه لسهولة القراءة مع الحفاظ على طبيعة البث لاستجابة.
3. تكوين الطلب
يجعل Apidog من السهل تكوين الرؤوس والمعلمات الضرورية لطلبات بث NDJSON، مما يضمن التواصل السليم مع نقاط نهاية البث الخاصة بك.
دليل خطوة بخطوة لبث نقاط نهاية HTTP التي تعيد NDJSON
لاختبار نقطة نهاية بث NDJSON في Apidog:
الخطوة 1: إنشاء طلب HTTP جديد

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

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

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

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

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