前言
不積跬步,無以至千里;不積小流,無以成江海;很久沒上來寫博客了,趁着疫情在家,尋思將這些年的一些小經驗記錄下來。
本文轉載自公司內部wiki。
1、目的
在開發工作中,有些時候需要調試已經對接過API,比如APP/H5已經對接了N個接口,但是其中幾個接口可能有服務端的變更,需要回歸一下接口的兼容性,這個時候用 Fiddler/Charles 代理對應的客戶端請求,攔截指定規則的請求,轉發到你想要進行測試驗證的服務器,這就可以非常方便驗證服務是否能滿足真實需求了。(標題中所謂指定API服務器,可以是正式環境的API、預覽環境的API、測試環境的API、本地的API,只需要對應的客戶端支持即可。)
2、Fiddler 怎麼做
- 首先確保你的 Fiddler 可以遠程調試
這個配置主要是爲了考慮你可能是需要調試APP,那所謂的客戶端和你的 Fiddler 工具勢必不在同一個機器上,因爲一個是 Windows 一個可能是 Android 或者 iOS。如下圖。
(在如上圖中確保 `Allow remote computers to connect`,同時我在這裏強烈建議大家把 `Act as system proxy on startup` 去掉勾選,這個是一個懶人配置,但是會帶來很多的坑) - 然後在 Fiddler 的 FiddlerScript 界面找到 OnBeforeRequest 代碼段
-
在這個方法裏面寫入以下代碼就可以完成目標
OnBeforeRequest Example
/*
* 這裏是舉例子
* if 條件可以相當的複雜,根據各自的需求來,語法基本和 C#/Java/JavaScript 類似,有還算比較友好的智能提示。
* oSeesion 的類型是 Session,又上角有一個 ClassView 可以看到更多的API如果感興趣的話。
*/
var yourApi=
"http://127.0.0.1:45678/api"
;
if
(oSession.fullUrl.Contains(
"https://appapi.safetree.com.cn/path-you-want"
)){
oSession.fullUrl=oSession.fullUrl.Replace(
"https://appapi.safetree.com.cn/path-you-want"
,yourApi)
}
3、Charles 怎麼做
- 同樣是支持遠程訪問
- 找到 Map Remote 功能
- 編寫 Map 規則
記得要啓用哦,`Enable Map Remote`