Map 功能適合長期地將某一些請求重定向到另一個網路地址或本地檔案。只能修改返回資料。
Rewrite 功能適合對網路請求進行一些正則替換。可修改請求資料和響應資料。
Breakpoints 功能適合做一些臨時性的修改。在響應時間內,可修改請求資料和響應資料。
Charles 的map功能,就是將某個請求進行重定向,然後用重定向後的內容來修改請求內容;map又分Map Remote和Map Local,顧名思義:Map Remote 是將指定的網路請求重定向到另一個網址,Map Local 是將指定的網路請求重定向到本地檔案。
Rewrite 功能功能適合對某一類網路請求進行一些正則替換,以達到修改結果的目的。
上面提供的 Rewrite 功能最適合做批次和長期的替換,但是很多時候,我們只是想臨時修改一次網路請求結果,這個時候,使用 Rewrite 功能雖然也可以達到目的,但是過於麻煩,對於臨時性的修改,我們最好使用 Breakpoints 功能。
Breakpoints 功能類似我們在 Xcode 中設定的斷點一樣,當指定的網路請求發生時,Charles 會截獲該請求,這個時候,我們可以在 Charles 中臨時修改網路請求的返回內容。
有些時候我們想讓伺服器返回一些指定的內容,方便我們偵錯一些特殊情況。例如列表頁面為空的情況,資料異常的情況,部分耗時的網路請求超時的情況等。如果沒有Charles,要伺服器配合構造相應的資料顯得會比較麻煩。這個時候,使用 Charles 相關的功能就可以滿足我們的需求。
Map Local的使用場景,要驗證介面返回資料的各種場景,使用本地對映可以修改請求介面的response。對於 Map Local 功能,我們需要填寫的重定向的源地址和原生的目標檔案。對於有一些複雜的網路請求結果,我們可以先使用 Charles 提供的 「Save Response…」 功能,將請求結果儲存到本地(如下圖所示),然後稍加修改,成為我們的目標對映檔案。具體操作步驟如下:
1.儲存介面響應:右鍵-->save response-->儲存到本地路徑(最好為json格式)備用,這裡還是用自己寫的API。如下圖所示:
2.在 Charles 的選單中,選擇 「Tools」–> 「Map Local」 即可進入到相應功能的設定頁面。如下圖所示:
這種操作稍微有點複雜。或者你可以點選介面-->右鍵-->Map Local進入Map Edit頁面,如下圖所示:
3.在Map Local設定頁面,勾選「Enable Map Local」,點選「Add」,然後進行設定,設定Map Local path 選擇你儲存到本地已修改的json檔案(我把張三修改成了北京-宏哥)。如下圖所示:
4.瀏覽器存取或者其他介面工具重新傳送請求,預期結果返回北京-宏哥與實際結果一樣,如下圖所示:
Map Remote的使用場景,要驗證介面返回資料的各種場景,使用本地對映可以修改請求介面的response。對於 Map Remote 功能,我們需要分別填寫網路重定向的源地址和目的地址,對於不需要限制的條件,可以留空。具體操作步驟如下:
1.在 Charles 的選單中,選擇 「Tools」–> 「Map Remote」 即可進入到相應功能的設定頁面。如下圖所示:
這種操作稍微有點複雜。或者你可以點選介面-->右鍵-->Map Remote進入Map Edit頁面,如下圖所示:
2.在Map Remote設定頁面,勾選「Enable Map Remote」,點選「Add」,然後進行設定,設定Map From(介面地址:http://10.11.53.193:5566/users/1801)和Map To(對映地址:http://10.11.53.193:5566/users/1803),宏哥將其對映到百度 。如下圖所示:
3.傳送預期結果返回王五實際結果一樣,如下圖所示:
Rewrite 功能功能適合對某一類網路請求進行一些正則替換,以達到修改結果的目的。
1.例如,還是用之前API 請求是獲得使用者賬戶資訊,而我當前的賬戶是 「張三」返回賬戶資訊是成功:success,如下圖所示:
2.我們想試著直接修改網路返回值,將 success 換成 fail。於是我們啟用 Rewrite 功能,然後設定如下的規則:
3.勾選「Enable Rewrite」,點選「Add」,然後設定規則,如下圖所示:
4.瀏覽器存取或者其他介面工具重新傳送請求,預期結果返回fail與實際結果一樣,如下圖所示:
上面提供的 Rewrite 功能最適合做批次和長期的替換,但是很多時候,我們只是想臨時修改一次網路響應結果,這個時候,使用 Rewrite 功能雖然也可以達到目的,但是過於麻煩,對於臨時性的修改,我們最好使用 Breakpoints 功能。
Breakpoints 功能類似我們在 Xcode 中設定的斷點一樣,當指定的網路請求發生時,Charles 會截獲該請求返回資料,這個時候,我們可以在 Charles 中臨時修改網路請求的返回資料。
打斷點修改返回資料的方法已經在上一篇文章中進行了詳細的介紹,這裡宏哥就不做贅述了。