Mit NodeJS eine API abfragen oder eine Datei

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

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 Artikel
Code-Generator für Einbindungen und externe Skripte

Code-Generator für Einbindungen und externe Skripte

Nutzen Sie unseren Code-Generator: Flexibles Skript zur Einbindung externer JavaScript-Dateien erstellen lassen. Zum Artikel