Client HTTP pour JavaScript (Node.js) : top des bibliothèques pour travailler avec le réseau
Dans le développement web moderne avec Node.js, l'envoi de requêtes HTTP est l'une des opérations les plus fréquentes. Que ce soit pour interagir avec une API REST, télécharger des fichiers ou communiquer avec des microservices, un client HTTP fiable est indispensable. Dans cet article, nous allons analyser en détail les quatre meilleures bibliothèques pour JavaScript (Node.js) : Axios, Got, node-fetch et undici. Vous découvrirez leurs caractéristiques, leurs performances et obtiendrez des exemples de code prêts à l'emploi.
1. Axios — le standard universel
Axios est le client HTTP le plus populaire pour Node.js et les navigateurs. Il est basé sur les Promesses et prend en charge les intercepteurs, l'analyse JSON automatique, la protection CSRF et l'annulation de requêtes.
Installation :
npm install axiosExemple de requête GET :
const axios = require('axios');
async function getUser(id) { try { const response = await axios.get(`https://api.example.com/users/${id}`); console.log(response.data); } catch (error) { console.error('Erreur :', error.message); }}
getUser(1);Exemple de POST avec en-têtes :
const axios = require('axios');
const data = { name: 'Alice', role: 'developer' };
axios.post('https://api.example.com/users', data, { headers: { 'Content-Type': 'application/json' }}).then(res => console.log(res.status));Avantages : simplicité, vaste écosystème, prise en charge de la progression du téléchargement.
Inconvénients : taille du paquet (~100 Ko), redondance pour les tâches simples.
2. Got — rapide et fonctionnel
Got est un client HTTP léger avec une API riche. Il prend en charge le streaming, la mise en cache, les tentatives répétées et est plus rapide qu'Axios.
Installation :
npm install gotExemple avec flux et gestion des erreurs :
const got = require('got');const fs = require('fs');
async function downloadFile(url, outputPath) { try { const stream = got.stream(url); const fileStream = fs.createWriteStream(outputPath); stream.pipe(fileStream);
await new Promise((resolve, reject) => { stream.on('end', resolve); stream.on('error', reject); }); console.log('Fichier téléchargé'); } catch (error) { console.error('Erreur de téléchargement :', error.message); }}
downloadFile('https://example.com/file.zip', './file.zip');Exemple avec tentatives répétées :
const got = require('got');
got('https://api.example.com/data', { retry: { limit: 3, methods: ['GET'] }}).then(response => console.log(response.body));Avantages : taille réduite, rapidité, tentatives intégrées.
Inconvénients : API moins intuitive pour les débutants.
3. node-fetch — une syntaxe familière depuis le navigateur
node-fetch est un port de l'API Fetch du navigateur pour Node.js. Idéal si vous êtes habitué à fetch dans le navigateur et souhaitez un code uniforme.
Installation :
npm install node-fetchExemple avec async/await :
const fetch = require('node-fetch');
async function getPosts() { const response = await fetch('https://jsonplaceholder.typicode.com/posts/1'); if (!response.ok) throw new Error('Erreur HTTP ' + response.status); const data = await response.json(); console.log(data.title);}
getPosts();Exemple d'envoi de FormData :
const fetch = require('node-fetch');const FormData = require('form-data');
const form = new FormData();form.append('file', fs.createReadStream('./photo.jpg'));\ Aussi dans la bibliothèque
Travailler avec Excel en Rust : bibliothèques et exemples de code