Heim >Web-Frontend >js-Tutorial >Protokollierungssystem mit Proxy und Fetch

Protokollierungssystem mit Proxy und Fetch

Patricia Arquette
Patricia ArquetteOriginal
2024-12-03 09:12:10590Durchsuche

Logging System with Proxy and Fetch

  1. Proxy-Objekt: Der fetchLogger umschließt die Abruffunktion.
    Es verwendet die Apply-Trap, um Aufrufe zum Abrufen abzufangen.

  2. Anfrageprotokollierung: Protokolliert die URL und Optionen der Anfrage.
    Antwortverarbeitung: Protokolliert den Antwortstatus, den Statustext und die URL.
    Klont die Antwort, um sicherzustellen, dass der Text mehrmals gelesen werden kann.

  3. Fehlerbehandlung: Erfasst und protokolliert alle während des Abrufs aufgetretenen Fehler.

  4. Verwendung des Proxys: Sie können fetch global ersetzen, indem Sie den Proxy window.fetch zuweisen.

// Create a logging wrapper for fetch using Proxy
const fetchLogger = new Proxy(fetch, {
    apply: (target, thisArg, args) => {
        // Log the request details
        const [url, options] = args;
        console.log("Fetch Request:");
        console.log("URL:", url);
        console.log("Options:", options);

        // Call the original fetch function
        return Reflect.apply(target, thisArg, args)
            .then(response => {
                // Log response details
                console.log("Fetch Response:");
                console.log("Status:", response.status);
                console.log("Status Text:", response.statusText);
                console.log("URL:", response.url);

                // Return the response for further use
                return response.clone(); // Clone to allow response reuse
            })
            .catch(error => {
                // Log errors
                console.error("Fetch Error:", error);
                throw error; // Rethrow the error for caller handling
            });
    }
});

// Example usage of the logging fetch
fetchLogger("https://jsonplaceholder.typicode.com/posts", {
    method: "GET",
    headers: {
        "Content-Type": "application/json"
    }
})
    .then(response => response.json())
    .then(data => console.log("Data:", data))
    .catch(error => console.error("Error in fetch:", error));

Ersetzen Sie den globalen Abruf durch Protokollierung

window.fetch = fetchLogger;

Das obige ist der detaillierte Inhalt vonProtokollierungssystem mit Proxy und Fetch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn