NDJSON 101: การสตรีมผ่าน HTTP Endpoints

ค้นพบ NDJSON: สตรีมข้อมูลผ่าน HTTP อย่างมีประสิทธิภาพ! คู่มือนี้อธิบายพื้นฐาน, ข้อดีเหนือ JSON, และวิธี Apidog ช่วยทดสอบ/แก้จุดบกพร่อง endpoint สตรีมมิ่ง

อาชว์

อาชว์

4 June 2025

NDJSON 101: การสตรีมผ่าน HTTP Endpoints

ในโลกที่ขับเคลื่อนด้วยข้อมูลในปัจจุบัน การถ่ายโอนชุดข้อมูลขนาดใหญ่ระหว่างระบบอย่างมีประสิทธิภาพเป็นสิ่งสำคัญ แม้ว่า JSON จะกลายเป็นรูปแบบมาตรฐานสำหรับการแลกเปลี่ยนข้อมูล แต่ก็ต้องเผชิญกับข้อจำกัดเมื่อจัดการข้อมูลจำนวนมากหรือสถานการณ์การสตรีม นี่คือที่มาของ NDJSON (Newline Delimited JSON) – รูปแบบที่เรียบง่ายแต่ทรงพลังซึ่งปฏิวัติวิธีการสตรีมข้อมูลผ่านการเชื่อมต่อ HTTP ในบทความนี้ เราจะสำรวจว่า NDJSON คืออะไร แตกต่างจาก JSON มาตรฐานอย่างไร และ Apidog สามารถช่วยคุณทำงานกับปลายทางสตรีมมิง NDJSON ได้อย่างไร

💡
เคล็ดลับ: ทดสอบปลายทางสตรีมมิง NDJSON ได้อย่างง่ายดายด้วยคุณสมบัติการแสดงภาพแบบเรียลไทม์ของ Apidog ซึ่งแตกต่างจากเครื่องมือทั่วไป Apidog จะแสดงอ็อบเจกต์ JSON แต่ละรายการเมื่อมาถึง ทำให้คุณสามารถตรวจสอบข้อมูลการสตรีมได้ทันที เหมาะสำหรับการแก้ไขข้อบกพร่องของชุดข้อมูลขนาดใหญ่โดยไม่ต้องเขียนโค้ดการแยกวิเคราะห์แบบกำหนดเอง
button

NDJSON คืออะไร

NDJSON (Newline Delimited JSON) เป็นรูปแบบที่เก็บข้อมูลที่มีโครงสร้างเป็นลำดับของอ็อบเจกต์ JSON โดยแต่ละอ็อบเจกต์อยู่ในบรรทัดของตัวเอง คั่นด้วยอักขระขึ้นบรรทัดใหม่ (\n) นอกจากนี้ยังเป็นที่รู้จักกันในชื่อ JSON Lines (JSONL) ในบางบริบท

ตัวอย่างง่ายๆ ของ NDJSON:

{"id": 1, "name": "Alice", "score": 95}
{"id": 2, "name": "Bob", "score": 87}
{"id": 3, "name": "Charlie", "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 ใหม่

creating a new API request using Apidog

ขั้นตอนที่ 2: ตั้งค่าวิธีการร้องขอ

specifying HTTP request method in Apidog

ขั้นตอนที่ 3: ป้อน URL ปลายทางการสตรีมของคุณ

Entering endpoint request URL in Apidog

ขั้นตอนที่ 4: ส่งคำขอ

sending endpoint request using Apidog

ขั้นตอนที่ 5: ดูผลการทดสอบ

ดู Apidog แสดงการตอบสนอง NDJSON แบบสตรีมมิงแบบเรียลไทม์

Ollama

คุณสามารถเลือกที่จะรวมข้อความ NDJSON ที่ส่งคืนเป็นคำตอบที่สมบูรณ์ได้ เรียนรู้เพิ่มเติมได้ที่นี่

บทสรุป

NDJSON มอบโซลูชันที่สง่างามสำหรับการสตรีมข้อมูลที่มีโครงสร้างผ่าน HTTP โดยผสมผสานความยืดหยุ่นของ JSON เข้ากับประสิทธิภาพของการประมวลผลแบบบรรทัดต่อบรรทัด ไม่ว่าคุณจะสร้างการวิเคราะห์แบบเรียลไทม์ ระบบประมวลผลบันทึก หรือฟังก์ชันการส่งออกข้อมูล NDJSON มอบแนวทางที่เรียบง่ายแต่ทรงพลังในการจัดการข้อมูลการสตรีม

ด้วยการสนับสนุนของ Apidog สำหรับการสตรีม NDJSON การทดสอบและแก้ไขข้อบกพร่องของปลายทางเหล่านี้จะง่ายขึ้นอย่างมาก คุณสามารถแสดงภาพ ตรวจสอบ และตรวจสอบความถูกต้องของข้อมูลการสตรีมของคุณได้โดยไม่ต้องเขียนโค้ดแบบกำหนดเอง เร่งกระบวนการพัฒนาของคุณ และทำให้มั่นใจได้ว่า API การสตรีมของคุณทำงานตามที่คาดไว้

เริ่มสำรวจการสตรีม NDJSON ด้วย Apidog วันนี้ และสัมผัสพลังของการประมวลผลข้อมูลแบบเรียลไทม์ในแอปพลิเคชันของคุณ!

button

Explore more

วิธีเรียกใช้ Mistral Small 3.1 ในเครื่องของคุณเองโดยใช้ Ollama: คู่มือทีละขั้นตอน

วิธีเรียกใช้ Mistral Small 3.1 ในเครื่องของคุณเองโดยใช้ Ollama: คู่มือทีละขั้นตอน

เรียนรู้วิธีรัน Mistral Small 3.1 (AI โอเพนซอร์ส) บนเครื่องคุณเองด้วย Ollama คู่มือนี้ง่าย ครอบคลุมการติดตั้ง, การใช้งาน, และเคล็ดลับ

19 March 2025

วิธีนำเข้า/ส่งออกข้อมูลคอลเลกชันใน Postman

วิธีนำเข้า/ส่งออกข้อมูลคอลเลกชันใน Postman

ในบทความนี้ เราจะคุยเรื่องนำเข้า/ส่งออก Postman และวิธีแก้ปัญหาที่ยืดหยุ่นกว่า ไม่จำกัดจำนวนครั้ง

18 March 2025

วิธีใช้ OpenAI Agents SDK?

วิธีใช้ OpenAI Agents SDK?

เรียนรู้วิธีใช้ SDK OpenAI Agents สร้างเวิร์กโฟลว์หลายตัวแทนอัจฉริยะ คู่มือนี้สอนการตั้งค่า สร้างตัวแทน เพิ่มเครื่องมือ การส่งมอบ ตั้งค่า guardrails พร้อมตัวอย่างโค้ดและแนวทางปฏิบัติที่ดีที่สุด

18 March 2025

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API