HTTP-Client für JavaScript (Node.js): Top-Bibliotheken für die Netzwerkarbeit
In der modernen Webentwicklung mit Node.js ist das Senden von HTTP-Anfragen eine der häufigsten Operationen. Ob es um den Zugriff auf eine REST-API, das Hochladen von Dateien oder die Interaktion mit Microservices geht – ohne einen zuverlässigen HTTP-Client kommt man nicht aus. In diesem Artikel analysieren wir im Detail die vier besten Bibliotheken für JavaScript (Node.js): Axios, Got, node-fetch und undici. Sie erfahren mehr über ihre Besonderheiten, Leistungsfähigkeit und erhalten fertige Codebeispiele.
1. Axios – der universelle Standard
Axios ist der beliebteste HTTP-Client für Node.js und Browser. Er basiert auf Promises und unterstützt Interceptors, automatisches JSON-Parsing, CSRF-Schutz und das Abbrechen von Anfragen.
Installation:
npm install axiosBeispiel einer GET-Anfrage:
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('Fehler:', error.message); }}
getUser(1);Beispiel einer POST-Anfrage mit Headern:
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));Vorteile: Einfachheit, umfangreiches Ökosystem, Unterstützung für Upload-Fortschritt.
Nachteile: Paketgröße (~100 KB), Überdimensionierung für einfache Aufgaben.
2. Got – schnell und funktionsreich
Got ist ein leichtgewichtiger HTTP-Client mit einer umfangreichen API. Er unterstützt Streaming, Caching, Wiederholungsversuche und ist schneller als Axios.
Installation:
npm install gotBeispiel mit Stream und Fehlerbehandlung:
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('Datei heruntergeladen'); } catch (error) { console.error('Download-Fehler:', error.message); }}
downloadFile('https://example.com/file.zip', './file.zip');Beispiel mit Wiederholungsversuchen:
const got = require('got');
got('https://api.example.com/data', { retry: { limit: 3, methods: ['GET'] }}).then(response => console.log(response.body));Vorteile: Geringe Größe, Geschwindigkeit, integrierte Wiederholungsversuche.
Nachteile: Weniger intuitive API für Anfänger.
3. node-fetch – vertraute Syntax aus dem Browser
node-fetch ist ein Port der browserbasierten Fetch-API für Node.js. Ideal, wenn Sie fetch im Browser gewohnt sind und einen einheitlichen Code wünschen.
Installation:
npm install node-fetchBeispiel mit 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('HTTP-Fehler ' + response.status); const data = await response.json(); console.log(data.title);}
getPosts();Beispiel zum Senden von FormData:
const fetch = require('node-fetch');const FormData = require('form-data');
const form = new FormData();form.append('file', fs.createReadStream('./photo.jpg'));\ Auch in der Bibliothek
Winston für JavaScript (Node.js): Vollständige Anleitung mit Beispielen
Geolokalisierung und Karten in TypeScript: Bibliotheken und praktische Beispiele
Geolokalisierung und Karten in Go: Überblick über Bibliotheken und Codebeispiele