Logging System with Proxy and Fetch

logging system with proxy and fetch

代理对象:fetchlogger 包装了 fetch 函数。
它使用 apply trap 来拦截对 fetch 的调用。

请求日志记录:记录请求的 url 和选项。
响应处理:记录响应状态、状态文本和 url。
克隆响应以确保正文可以被多次读取。

错误处理:捕获并记录提取过程中遇到的任何错误。

使用代理:您可以通过将代理分配给window.fetch来全局替换fetch。

// create a logging wrapper for fetch using proxyconst 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 fetchfetchlogger("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));

将全局获取替换为日志记录

window.fetch = fetchLogger;

以上就是Logging System with Proxy and Fetch的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1499133.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 21:01:41
下一篇 2025年12月19日 21:01:49

相关推荐

发表回复

登录后才能评论
关注微信