代理对象:fetchLogger 包装了 fetch 函数。
它使用 apply trap 来拦截对 fetch 的调用。
请求日志记录:记录请求的 url 和选项。
响应处理:记录响应状态、状态文本和 URL。
克隆响应以确保正文可以被多次读取。
错误处理:捕获并记录提取过程中遇到的任何错误。
使用代理:您可以通过将代理分配给window.fetch来全局替换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));
window.fetch = fetchLogger;
以上是带有代理和获取的日志系统的详细内容。更多信息请关注PHP中文网其他相关文章!