NDJSON 101 : Streaming via des points de terminaison HTTP

Découvrez NDJSON pour le streaming de données HTTP efficace. Guide sur les bases, avantages et comment Apidog simplifie les tests.

Louis Dupont

Louis Dupont

21 October 2025

NDJSON 101 : Streaming via des points de terminaison HTTP

Dans le monde actuel axé sur les données, le transfert efficace de grands ensembles de données entre les systèmes est crucial. Bien que JSON soit devenu le format standard pour l'échange de données, il est confronté à des limites lors du traitement de grands volumes de données ou de scénarios de streaming. C'est là qu'intervient NDJSON (Newline Delimited JSON) – un format simple mais puissant qui révolutionne la façon dont nous diffusons des données sur les connexions HTTP. Dans cet article, nous allons explorer ce qu'est NDJSON, en quoi il diffère du JSON standard et comment Apidog peut vous aider à travailler avec les points de terminaison de streaming NDJSON.

💡
Conseil de pro : Testez les points de terminaison de streaming NDJSON sans effort avec la fonctionnalité de visualisation en temps réel d'Apidog. Contrairement aux outils traditionnels, Apidog affiche chaque objet JSON au fur et à mesure de son arrivée, ce qui vous permet d'inspecter les données en streaming à la volée, ce qui est parfait pour déboguer de grands ensembles de données sans écrire de code d'analyse personnalisé.
button

Qu'est-ce que NDJSON ?

NDJSON (Newline Delimited JSON) est un format qui stocke des données structurées sous forme d'une séquence d'objets JSON, chaque objet étant sur sa propre ligne, séparé par un caractère de nouvelle ligne (\n). Il est également connu sous le nom de JSON Lines (JSONL) dans certains contextes.

Voici un exemple simple de NDJSON :

{"id": 1, "name": "Alice", "score": 95}
{"id": 2, "name": "Bob", "score": 87}
{"id": 3, "name": "Charlie", "score": 92}

Chaque ligne est un objet JSON valide et complet, ce qui facilite le traitement d'un enregistrement à la fois sans charger l'ensemble du jeu de données en mémoire.

NDJSON vs. JSON traditionnel : principales différences

JSON traditionnel et NDJSON servent des objectifs différents et ont des caractéristiques distinctes :

Fonctionnalité JSON traditionnel NDJSON
Structure Document unique et complet Plusieurs objets JSON indépendants
Analyse Doit charger l'intégralité du document Peut traiter ligne par ligne
Streaming Non conçu pour le streaming Idéal pour le streaming
Utilisation de la mémoire Nécessite le document complet en mémoire Traite une ligne à la fois
Taille du fichier Limitée par la mémoire disponible Virtuellement illimitée

Le principal avantage de NDJSON est sa capacité à être traité de manière incrémentielle. Avec le JSON traditionnel, vous devez analyser l'intégralité du fichier avant d'accéder aux données. Avec NDJSON, vous pouvez lire et traiter une ligne à la fois, ce qui le rend parfait pour :

Pourquoi utiliser NDJSON pour le streaming HTTP ?

Le streaming HTTP permet aux serveurs d'envoyer des données aux clients de manière incrémentielle plutôt que d'attendre que l'intégralité de la réponse soit prête. NDJSON est particulièrement adapté au streaming HTTP car :

  1. Simplicité : chaque ligne est un objet JSON complet et valide
  2. Compatibilité : fonctionne avec les analyseurs JSON existants
  3. Traitement incrémentiel : les clients peuvent traiter les données au fur et à mesure de leur arrivée
  4. Efficacité de la mémoire : pas besoin de mettre en mémoire tampon l'intégralité de la réponse
  5. Lisibilité humaine : facile à inspecter et à déboguer

Comment diffuser NDJSON sur les points de terminaison HTTP

La mise en œuvre du streaming NDJSON sur HTTP est simple. Voici comment cela fonctionne côté serveur et côté client :

Implémentation côté serveur

Pour créer un point de terminaison HTTP qui diffuse NDJSON :

Définissez les en-têtes appropriés :

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

Écrivez chaque objet JSON dans le flux de réponse, suivi d'un caractère de nouvelle ligne :

// Exemple Node.js
app.get('/api/data/stream', (req, res) => {
  res.setHeader('Content-Type', 'application/x-ndjson');
  res.setHeader('Transfer-Encoding', 'chunked');
  
  // Diffuser les données au fur et à mesure qu'elles deviennent disponibles
  dataSource.on('data', (item) => {
    res.write(JSON.stringify(item) + '\n');
  });
  
  dataSource.on('end', () => {
    res.end();
  });
});

Traitement côté client

Côté client, vous devez :

  1. Effectuer une requête HTTP vers le point de terminaison de streaming
  2. Traiter la réponse de manière incrémentielle, ligne par ligne
  3. Analyser chaque ligne en tant qu'objet JSON

Voici un exemple simple en 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(); // Conserver la dernière ligne incomplète
    
    for (const line of lines) {
      if (line.trim() === '') continue;
      const jsonObject = JSON.parse(line);
      processData(jsonObject); // Faire quelque chose avec les données
    }
  }
}

Cas d'utilisation courants pour le streaming NDJSON

Le streaming NDJSON est particulièrement précieux dans des scénarios tels que :

Tester les points de terminaison NDJSON avec Apidog

Apidog, la plateforme de développement d'API complète, offre une prise en charge intégrée pour tester et déboguer les points de terminaison de streaming NDJSON. Voici comment Apidog simplifie le travail avec NDJSON :

1. Visualisation du flux en temps réel

L'interface utilisateur d'Apidog affiche les réponses NDJSON en temps réel, en montrant chaque objet JSON au fur et à mesure de son arrivée du serveur. Cela facilite la surveillance des données en streaming sans écrire de code personnalisé.

2. Analyse et formatage automatiques

Apidog analyse automatiquement chaque ligne de NDJSON au fur et à mesure de son arrivée, en la formatant pour la lisibilité tout en préservant la nature de streaming de la réponse.

3. Configuration de la requête

Apidog permet de configurer facilement les en-têtes et les paramètres nécessaires pour les requêtes de streaming NDJSON, garantissant ainsi une communication appropriée avec vos points de terminaison de streaming.

Guide étape par étape pour le streaming des points de terminaison HTTP qui renvoient NDJSON

Pour tester un point de terminaison de streaming NDJSON dans Apidog :

Étape 1 : créer une nouvelle requête HTTP

creating a new API request using Apidog

Étape 2 : définir la méthode de requête

specifying HTTP request method in Apidog

Étape 3 : saisir l'URL de votre point de terminaison de streaming

Entering endpoint request URL in Apidog

Étape 4 : envoyer la requête

sending endpoint request using Apidog

Étape 5 : afficher le résultat du test

Regardez Apidog afficher la réponse NDJSON en streaming en temps réel

Ollama

Vous pouvez choisir de fusionner les messages NDJSON renvoyés en une réponse complète. En savoir plus ici.

Conclusion

NDJSON fournit une solution élégante pour le streaming de données structurées sur HTTP, combinant la flexibilité de JSON avec l'efficacité du traitement ligne par ligne. Que vous construisiez des analyses en temps réel, des systèmes de traitement de journaux ou des fonctionnalités d'exportation de données, NDJSON offre une approche simple mais puissante pour gérer les données en streaming.

Grâce à la prise en charge par Apidog du streaming NDJSON, le test et le débogage de ces points de terminaison deviennent beaucoup plus faciles. Vous pouvez visualiser, inspecter et valider vos données en streaming sans écrire de code personnalisé, ce qui accélère votre processus de développement et garantit que vos API de streaming fonctionnent comme prévu.

Commencez à explorer le streaming NDJSON avec Apidog dès aujourd'hui et découvrez la puissance du traitement des données en temps réel dans vos applications !

button

Pratiquez le Design-first d'API dans Apidog

Découvrez une manière plus simple de créer et utiliser des API