Mit NodeJS eine API abfragen oder eine Datei
NodeJS ist eine sehr beliebige Plattform für die Entwicklung von serverseitiger Anwendungen, web-basierter Schnittstellen. Da liegt es natürlich nahe, mithilfe von NodeJS auch eine andere Schnittstelle aufzurufen, oder eine entfernte Datei über HTTP/S herunterzuladen. Durch die Verwendung von Modulen wie axios oder node-fetch können Sie einfach HTTP-Anfragen an externe APIs senden und deren Antworten verarbeiten. Mit dem eingebauten fs-Modul (File System) können Sie lokal Dateien lesen, schreiben, ändern und löschen.
Mit NodeJS eine Datei herunterladen
Der Code beginnt mit dem Importieren der benötigten NodeJS-Module: https
für HTTPS-Anfragen, fs
für Dateioperationen und path
zum
Arbeiten mit Dateipfaden. Anschließend wird eine asynchrone Funktion downloadFile
definiert, die eine URL und einen Zielpfad als Parameter nimmt.
Innerhalb der downloadFile
-Funktion wird ein Stream erstellt, um die heruntergeladene Datei am Zielort zu speichern. Mit https.get
, wird eine
GET-Anfrage an die übergebene URL gestellt. Bei der Antwort wird überprüft, ob der Statuscode 200 ist, was auf einen erfolgreichen Download hindeutet. Falls nicht, wird die
teilweise geschriebene Datei gelöscht und die Promise mit einer Fehlermeldung abgelehnt.
const https = require('https');
const fs = require('fs');
const path = require('path');
async function downloadFile(url, dest) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(dest);
https.get(url, (response) => {
if (response.statusCode !== 200) {
fs.unlink(dest, () =>
reject(`Failed to download file: Status Code ${response.statusCode}`));
return;
}
response.pipe(file);
file.on('finish', () => file.close(resolve));
}).on('error', (err) => {
fs.unlink(dest, () => reject(err)); // Delete the file async on error
});
});
}
const url = 'https://cdn.renick.io/media/exchange/ttf/tesla-noise.m4a';
const dest = path.join(__dirname, 'downloaded_file.jpg');
downloadFile(url, dest)
.then(() => console.log('File downloaded successfully'))
.catch(err => console.error('Error downloading file:', err));
Mit NodeJS eine HTTP-Abfrage machen
Der folgende Code nutzt das https
-Modul, um eine API abzurufen. Für unverschlüsselte Verbindungen steht das http
-Modul zur Verfügung. Eine
asynchrone Funktion namens get
wird definiert, die eine URL als Argument nimmt. Diese Funktion gibt eine Promise zurück, was typisch für asynchrone Operationen in
JavaScript ist. Innerhalb der Funktion wird https.get
verwendet, um eine GET-Anfrage an die übergebene URL zu senden.
Während der Verarbeitung der Antwort von der HTTP-Anfrage wird zuerst der Statuscode überprüft. Wenn der Statuscode nicht 200 ist, also erfolgreich mit Inhalt, wird die Promise mit einer Fehlermeldung abgelehnt und die Ausführung der Funktion wird beendet.
const https = require('https');
async function get(url) {
return new Promise((resolve, reject) => {
https.get(url, (response) => {
if (response.statusCode !== 200) {
reject(`Request failed with status code ${response.statusCode}`);
return;
}
let data = '';
response.on('data', (chunk) => data += chunk);
response.on('end', () => resolve(data));
}).on('error', (error) => {
reject(error);
});
});
}
const url = 'https://www.renick.io/sitemap.xml';
get(url)
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
Performance im Browser mit Timeouts verbessern
Die Performance von Javascript-Events kann durch einen Kniff verbessert werden. Ein Beispiel für Debouncing erklärt wie. Zum ArtikelCode-Generator für Einbindungen und externe Skripte
Nutzen Sie unseren Code-Generator: Flexibles Skript zur Einbindung externer JavaScript-Dateien erstellen lassen. Zum Artikel