Maison > interface Web > js tutoriel > Système de journalisation avec proxy et récupération

Système de journalisation avec proxy et récupération

Patricia Arquette
Libérer: 2024-12-03 09:12:10
original
665 Les gens l'ont consulté

Logging System with Proxy and Fetch

  1. Objet proxy : le fetchLogger enveloppe la fonction de récupération.
    Il utilise le piège apply pour intercepter les appels à récupérer.

  2. Journalisation des demandes : enregistre l'URL et les options de la demande.
    Gestion des réponses : enregistre l'état de la réponse, le texte de l'état et l'URL.
    Clone la réponse pour garantir que le corps peut être lu plusieurs fois.

  3. Gestion des erreurs : capture et enregistre toutes les erreurs rencontrées lors de la récupération.

  4. Utilisation du proxy : vous pouvez remplacer fetch globalement en attribuant le proxy à window.fetch.

// 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));
Copier après la connexion

Remplacez la récupération globale par la journalisation

window.fetch = fetchLogger;
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal