HTTP-Client in JavaScript: Anfragen richtig in Node.js stellen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum braucht man einen HTTP-Client in Node.js?

In der modernen Webentwicklung kommt man nicht ohne die Interaktion mit externen Diensten aus. Ob das Senden von Daten an einen Server, das Abrufen von Wechselkursen, die Arbeit mit REST APIs oder die Integration mit Cloud-Plattformen – all dies erfordert die Fähigkeit, HTTP-Anfragen zu senden. In der Node.js-Umgebung gibt es dafür mehrere Ansätze: vom integrierten http-Modul bis hin zu beliebten Drittanbieter-Bibliotheken wie axios und dem nativen fetch.

In diesem Artikel werden wir uns ansehen, wie man einen HTTP-Client in JavaScript (Node.js) richtig organisiert, welche Werkzeuge man für verschiedene Aufgaben auswählt und wie man typische Fehler vermeidet. Sie erfahren, wie man Antworten verarbeitet, Asynchronität verwaltet und sauberen, wartbaren Code schreibt.



Grundlegende Methoden zum Erstellen von HTTP-Anfragen in Node.js

Node.js bietet dem Entwickler mehrere Optionen für die Arbeit mit HTTP. Betrachten wir drei Hauptmethoden: das integrierte http-Modul, die Bibliothek axios und das native fetch.



1. Das integrierte Modul http/https

Der ansatz mit der niedrigsten Abstraktionsebene. Er gibt die volle Kontrolle über die Anfrage, erfordert aber das Schreiben von mehr Code. Geeignet für Fälle, in denen Abhängigkeiten minimiert werden müssen oder mit nicht standardmäßigen Protokollen gearbeitet wird.

Beispiel einer GET-Anfrage mit dem https-Modul:

const https = require('https');

function getUsers() { return new Promise((resolve, reject) => { https.get('https://jsonplaceholder.typicode.com/users', (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => resolve(JSON.parse(data))); }).on('error', reject); });}

getUsers().then(users => console.log(users[0].name));

Vorteile: keine externen Abhängigkeiten, volle Kontrolle.
Nachteile: umständlicher Code, Notwendigkeit, in Promise zu verpacken, manuelle Stream-Verwaltung.



2. Die Bibliothek axios

Die beliebteste Bibliothek für HTTP-Anfragen. Funktioniert sowohl im Browser als auch in Node.js. Unterstützt Promise, Interceptors, automatisches JSON-Parsing und das Abbrechen von Anfragen.

Installation:

npm install axios

Beispiel einer POST-Anfrage mit axios:

const axios = require('axios');

async function createPost() { try { const response = await axios.post('https://jsonplaceholder.typicode.com/posts', { title: 'HTTP-Client in JavaScript', body: 'Anfragen richtig stellen', userId: 1 }); console.log('Post erstellt:', response.data); } catch (error) { console.error('Fehler:', error.message); }}

createPost();

Vorteile: einfache API, automatische JSON-Verarbeitung, Interceptors, Timeouts.
Nachteile: Installation erforderlich, Bibliotheksgröße (~14 KB gzip).



3. Natives fetch (Node.js 18+)

Seit Node.js Version 18 ist fetch eine integrierte Funktion. Dies vereinheitlicht den Code zwischen Browser und Server. In älteren Node.js-Versionen wird jedoch ein Polyfill benötigt.

Beispiel mit fetch und async/await:

async function getUser(id) {  const response = await fetch(`https://jsonplaceholder.typicode.com/users/${id}`);  if (!response.ok) {    throw new Error(`HTTP error! status: ${response.status}`);  }  const user = await response.json();  return user;}

getUser(1).then(user => console.log(user.name));

Vorteile: nativ, keine Installation erforderlich, moderne API.
Nachteile: nicht unterstützt in Node.js < 18, kein integrierter Timeout, manuelle Statusprüfung erforderlich.



Richtige Fehlerbehandlung und Timeouts

Eines der häufigsten Probleme bei der Arbeit mit HTTP-Clients ist das Ignorieren der Fehlerbehandlung. Das Netzwerk ist unzuverlässig, der Server kann mit einem 500er-Fehler antworten oder gar nicht antworten.

Blogs

Buchempfehlungen