」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 在 DevTools 中覆蓋和模擬網路回應

在 DevTools 中覆蓋和模擬網路回應

發佈於2024-11-04
瀏覽:383

在诊断生产环境中的问题时,通常会面临很多风险。有缺陷的 API 调用、拖累性能的第三方脚本或数据管道中的无意错误都可能很快造成重大问题。值得庆幸的是,借助 Chrome DevTools,您可以在发布任何更改之前在本地测试和验证解决方案。 DevTools 中最强大但未充分利用的工具之一是覆盖功能。它允许您直接修改网络响应,让您在不改变生产环境的情况下模拟各种场景。

在本指南中,我们将向您展示如何安装 DevTools(如果您还没有安装)、如何逐步覆盖网络请求,并提供有关充分利用这个宝贵工具的提示。

为什么要使用网络覆盖?

想象一下能够调整 API 的响应或模拟失败的网络请求,所有这些都不会触及后端代码或影响您的用户。这正是网络覆盖赋予您的能力。无论您是否尝试:

  • 测试不同场景中缓慢或失败的网络请求。
  • 在后端准备好之前验证新功能。
  • 修改静态资源(如 CSS 或 JavaScript 文件)以调试样式或行为问题。

DevTools 为您提供了一个受控环境,您可以在其中进行调整、实验和验证——所有这些都在浏览器内进行。

安装 Chrome 开发者工具

如果您是网络开发人员,您的计算机上可能已经安装了 Google Chrome。但如果您尚未设置,请从 Chrome 官方网站下载。 Chrome DevTools 内置于浏览器中,因此安装后您就可以开始使用了。

专业提示:DevTools 也适用于其他基于 Chromium 的浏览器,如 Edge、Brave 和 Opera,尽管 Chrome 往往具有最新的功能。

DevTools 网络覆盖入门

如果您不熟悉 DevTools 或此功能,请按照以下简单步骤操作:

1. 打开开发工具

右键单击网页的任意元素,然后选择检查。这将打开 DevTools 界面。或者,您可以按 Ctrl Shift I (Windows/Linux) 或 Cmd Option I (Mac) 将其打开。

2. 导航到网络选项卡

DevTools 打开后,单击 Network 选项卡。在这里,您将看到您网站发出的每个网络请求的实时反馈。从 API 调用到图像加载,所有内容都会在此选项卡中记录和跟踪。如果列表看起来令人难以承受,您可以使用过滤器(例如用于 AJAX 请求的 XHR)来将视图范围缩小到最相关的请求。

3. 识别并覆盖特定请求

滚动浏览请求列表以找到您要修改的请求。例如,如果 API 返回错误结果或第三方脚本行为不当,您就可以进行干预。右键单击所需的请求并选择覆盖内容

Override and Mock Network Responses in DevTools

如果这是您第一次使用该功能,系统将提示您选择一个本地文件夹来存储您的覆盖。此文件夹将包含您的所有更改,以便以后轻松恢复到原始文件。

4. 编辑回复

选择本地文件夹后,您想要覆盖的响应将自动在 Sources 选项卡中打开。您可以在此处根据需要修改内容。无论是调整 JSON 响应、调整 JavaScript 函数还是修改 HTML 文件,您都可以自由地进行必要的更改。

专业提示:修改大文件时要小心,尤其是第三方库,因为它们可能包含关键函数。专注于特定部分以避免意外后果。

Override and Mock Network Responses in DevTools

5. 保存并刷新

完成编辑后,按 Ctrl S (Windows/Linux) 或 Cmd S (Mac) 保存文件。然后,刷新您的网页。这些更改现在将反映在您的本地环境中,允许您测试修改后的网络请求,就像它是实时的一样。

专业提示:请记住,这些更改仅适用于您的本地环境。如果您关闭浏览器或清除覆盖,原始请求将恢复。

高级用户的高级技巧

虽然上述步骤概述了覆盖网络响应的基础知识,但 Chrome DevTools 为那些希望将调试提升到新水平的人提供了更大的灵活性:

模拟网络状况

Chrome DevTools 还允许您模拟不同的网络条件。例如,如果您想测试应用程序在慢速 3G 连接或网络暂时不可用时的行为,您可以在 Network 选项卡下限制网络速度。只需单击标有 在线 的下拉菜单,然后选择所需的速度配置文件。

这对于确保您的应用程序在用户连接较差或带宽有限时正常降级特别有用。

多个文件的本地覆盖

需要一次覆盖多个文件?您可以将多个请求添加到覆盖文件夹,从而使您可以完全控制网站的多个方面。例如,您可以组合 CSS、JavaScript 和 API 响应覆盖来创建反映潜在现实场景的模拟环境,所有这些都无需更改一行生产代码。

跨会话持久覆盖

如果您经常处理同一个项目,Chrome DevTools 允许您在浏览器会话之间保留您的覆盖。这可以确保即使在关闭浏览器后,您的更改在下次打开它时仍然有效,从而节省您的时间和精力。

要启用此功能,请转到 DevTools 中的 Settings 菜单(齿轮图标),导航到 Overrides 部分,然后选中 Enable permanent overrides.

结论

Chrome DevTools 不仅仅用于检查元素或调试 JavaScript 错误,它还是一个非常强大的工具,可以显着增强您在实时环境中进行故障排除和实验的能力。通过学习覆盖和模拟网络响应,您可以测试不同的解决方案、模拟各种场景并验证更改,而不会影响您的生产站点。

无论您是经验丰富的开发人员还是新手,掌握 Chrome DevTools 中的覆盖功能都将提高您的调试技能,并让您在发布之前对所做的更改更有信心。所以,不要只是调试——更智能地调试!

版本聲明 本文轉載於:https://dev.to/geraldhamiltonwicks/override-and-mock-network-responses-in-devtools-166m?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • Java 虛擬機器:生命週期與類別載入器
    Java 虛擬機器:生命週期與類別載入器
    Java 虛擬機器 (JVM) 是 Java 生態系統的核心,提供執行 Java 程式碼的所有必要工具。要充分理解它的工作原理,了解該解釋器的生命週期及其對 Java 應用程式的效能和最佳化的影響至關重要。 整個 JVM 生命週期始於一個稱為「JVM Bootstrapping」的基本過程,該過程...
    程式設計 發佈於2024-11-16
  • 以下是一些與 JavaScript 整數驗證文章內容一致的基於問題的標題:

專注於可靠性和最佳實踐:

* 如何在 Java 中可靠地驗證整數
    以下是一些與 JavaScript 整數驗證文章內容一致的基於問題的標題: 專注於可靠性和最佳實踐: * 如何在 Java 中可靠地驗證整數
    如何驗證 JavaScript 中的整數變數並引發非整數值錯誤確定 JavaScript 變數是否表示整數可能至關重要。有幾種方法可以有效地執行此檢查。 選項 1:使用 isNaN 和解析 Cast問題中提供的範例嘗試使用 NaN(data)檢查整數。然而,這種方法並不可靠。相反,請考慮下列函數:f...
    程式設計 發佈於2024-11-16
  • 酷炫的 CodePen 演示(10 月 4 日)
    酷炫的 CodePen 演示(10 月 4 日)
    輕質水扭曲效果 Ksenia Kondrashova 使用帶有水效果的漂亮著色器創建了一個演示。它看起來很逼真,就像游泳池裡的水一樣。感覺平靜和催眠。 懸停時的 3D 視差效果 Temani Afif 使用單一圖像標籤創建令人驚嘆的效果。這是一個很好的例子:一個 ...
    程式設計 發佈於2024-11-16
  • Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta 中的列偏移發生了什麼事?
    Bootstrap 4 Beta:列偏移的刪除和恢復Bootstrap 4 在其Beta 1 版本中引入了重大更改柱子偏移了。然而,隨著 Beta 2 的後續發布,這些變化已經逆轉。 從 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    程式設計 發佈於2024-11-16
  • 在 Go 中使用 WebSocket 進行即時通信
    在 Go 中使用 WebSocket 進行即時通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    程式設計 發佈於2024-11-16
  • 如何在 SQL 中計算某個值的總和,同時確保每行只計算一次?
    如何在 SQL 中計算某個值的總和,同時確保每行只計算一次?
    在SQL 中使用SUM() 將不同值分組在MySQL 查詢中,您想要計算下列值的總和轉換表,同時確保每行僅計算一次。為了實現這一點,您需要將 DISTINCT 關鍵字與 SUM() 函數結合使用。但是,您遇到了重複行導致 SUM() 結果膨脹的問題。 要解決此問題,請考慮表中的主鍵關係。如果 con...
    程式設計 發佈於2024-11-16
  • Vite中環境變數的處理
    Vite中環境變數的處理
    在現代 Web 開發中,管理敏感資料(例如 API 金鑰、資料庫憑證以及不同環境的各種配置)至關重要。將這些變數直接儲存在程式碼中可能會帶來安全風險並使部署變得複雜。 Vite,一個現代的前端建構工具,提供了一種透過.env檔案管理環境變數的簡單方法。 什麼是 .env 檔? .env 檔案是一...
    程式設計 發佈於2024-11-16
  • 如何使用 Django REST Framework 高效處理嵌套序列化器中的外鍵分配?
    如何使用 Django REST Framework 高效處理嵌套序列化器中的外鍵分配?
    Django REST Framework 中的嵌套序列化器的外鍵分配Django REST Framework (DRF) 提供了一個管理外鍵關係的便捷方法序列化資料。然而,在嵌套序列化器中獲得所需的行為可能具有挑戰性。 嵌套序列化器中的外鍵分配嵌套序列化器繼承其父序列化器的行為。預設情況下,它們...
    程式設計 發佈於2024-11-16
  • 如何從 CodeIgniter URL 中刪除「index.php」?
    如何從 CodeIgniter URL 中刪除「index.php」?
    CodeIgniter .htaccess 和URL 重寫問題導航CodeIgniter 應用程式通常需要從URL 中刪除“index.php”,以允許使用者造訪具有更清晰語法的頁面。不過,新用戶在這個過程中可能會遇到困難。 刪除“index.php”的關鍵在於修改應用程式設定檔(applicati...
    程式設計 發佈於2024-11-16
  • 您可以在 `` 標籤內嵌套更多的 `` 元素嗎?
    您可以在 `` 標籤內嵌套更多的 `` 元素嗎?
    不常見的 HTML 結構: 可以容納 以外的標籤嗎? 在 HTML 世界中,嵌套標籤可以創建複雜的結構。然而,某些標籤的放置有時會受到限制。以神秘的 標籤為例,許多人認為它只能嵌套 元素。 深入研究:您的詢問源於探索標籤是否有效的願望除了 之外的其他人都可以在 中找到一個家。為了揭開這個概念的...
    程式設計 發佈於2024-11-16
  • 如何使用 XPath 條件選擇 XML 文件中的特定節點?
    如何使用 XPath 條件選擇 XML 文件中的特定節點?
    利用 XPath 條件選擇節點透過 XPath 導覽 XML 文件時,通常需要根據特定條件限制檢索的節點。在此範例中,我們的任務是根據日期屬性選擇性地檢索節點。 以下XPath 表達式從提供的XML 文件中擷取所有 節點:$nodes = $xml->xpath('//xml/events')...
    程式設計 發佈於2024-11-16
  • 為什麼「margin: auto」不能與絕對定位的元素一起使用?
    為什麼「margin: auto」不能與絕對定位的元素一起使用?
    了解絕對定位邊距自動問題當將“position:absolute”應用於具有“margin-left:auto”和“的元素時margin-right: auto”,您可能會注意到邊距似乎沒有效果。此行為不同於“位置:相對”,其中邊距按預期工作。為了理解這種差異,讓我們更深入地研究底層機制。 當一個元...
    程式設計 發佈於2024-11-16
  • Go 如何處理方法中的指標和值接收者?
    Go 如何處理方法中的指標和值接收者?
    Go 指標:接收者和值類型Go 指標:接收者和值類型在Go 中,指針對於理解物件導向程式設計和記憶體管理是必不可少的。在處理指標時,掌握方法中接收器類型之間的差異至關重要。 type Vertex struct { X, Y float64 } func (v *Vertex) Abs() ...
    程式設計 發佈於2024-11-16
  • 如何從 Python 中的字串清單建立多個變數?
    如何從 Python 中的字串清單建立多個變數?
    如何從字串清單建立多個變數? [重複]許多程式場景要求我們同時操作多個物件或變數。一個常見的挑戰是從字串列表建立多個變量,其中每個變數的名稱與列表中的對應元素相符。 在 Python 中,您可以使用字典理解來完成此操作:names = ['apple', 'orange', 'banana'] fr...
    程式設計 發佈於2024-11-16
  • 如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    如何在 PHP 中組合兩個關聯數組,同時保留唯一 ID 並處理重複名稱?
    在 PHP 中組合關聯數組在 PHP 中,將兩個關聯數組組合成一個數組是常見任務。考慮以下請求:問題描述:提供的代碼定義了兩個關聯數組,$array1和$array2。目標是建立一個新陣列 $array3,它合併兩個陣列中的所有鍵值對。 此外,提供的陣列具有唯一的 ID,而名稱可能重疊。要求是建構一...
    程式設計 發佈於2024-11-16

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3