讓 iOS/Android 網(wǎng)絡(luò)API開(kāi)發(fā)更加自由-charles模擬服務(wù)器返回?cái)?shù)據(jù)

原因:在與服務(wù)器聯(lián)調(diào)接口之后,所有的API都能正常跑通,但是涉及到具體的業(yè)務(wù)邏輯時(shí),比如界面遇到不同的數(shù)據(jù)做出特定的布局操作或彈框提示,再或者只有當(dāng)數(shù)據(jù)字段符合特定的值時(shí)才能做出更多復(fù)雜的邏輯操作。如果依賴于服務(wù)器或者數(shù)據(jù)庫(kù),那么需要他們?nèi)湍阒圃旒贁?shù)據(jù)來(lái)檢測(cè)你的代碼的正確性,這樣是一次兩次沒(méi)問(wèn)題,但是量大的時(shí)候,會(huì)影響雙方的開(kāi)發(fā)進(jìn)度。能不能采取解耦的思想讓移動(dòng)端和服務(wù)端分隔開(kāi),在移動(dòng)端測(cè)試開(kāi)發(fā)階段,自己根據(jù)接口文檔制造自己需要的特定的返回?cái)?shù)據(jù)呢?

解決方案:這時(shí)候我們需要自己的代理服務(wù)器來(lái)實(shí)現(xiàn)--使用 Charles 制作代理服務(wù)器。

具體需求:當(dāng)API有所改動(dòng)時(shí),服務(wù)器正在開(kāi)發(fā)相應(yīng)功能,但是還沒(méi)有部署到服務(wù)器上去,只是在原接口的返回?cái)?shù)據(jù)中多加了一個(gè)字段“id”?,F(xiàn)在移動(dòng)端的業(yè)務(wù)邏輯寫好了,就等數(shù)據(jù)測(cè)試了。

具體操作步驟:

一、首先你需要下載一個(gè) Charles,并且安裝起來(lái),具體的使用方法這里不做贅述。可以移步這里學(xué)習(xí)。
二、抓取你需要修改的接口

抓取一個(gè)接口.png

大家可以看到,這個(gè)接口返回的是一個(gè)json串。這個(gè)請(qǐng)求是手機(jī)發(fā)起的,我們看到的只是軟件抓到的包數(shù)據(jù)。那么如何加入新的“id”字段呢?

三、使用 Charles 的 local map 功能

保存response數(shù)據(jù).png

保存 response 數(shù)據(jù)到本地電腦上去

選擇localmap.png

選擇local map

添加需要map的接口.png

點(diǎn)擊 Add 添加 map 規(guī)則

map規(guī)則.png

這些地方填入你的API信息,以及剛才保存的 response 文件地址

點(diǎn)擊保存map.png

點(diǎn)擊ok保存map規(guī)則。之后,只要是從你手機(jī)通過(guò) Charles 代理發(fā)出的這個(gè)接口的請(qǐng)求,都會(huì)被重定向到你電腦上本地的 response 文件中。

現(xiàn)在,我們?cè)谕ㄟ^(guò)手機(jī)調(diào)用一下之前的接口,結(jié)果呢?結(jié)果是還不如原來(lái)的,呵呵噠。。。

之前我們還能獲取到 title、content和type三個(gè)字段以及他們的值,現(xiàn)在直接返回的數(shù)據(jù)為nil。

找了半天原因,最終通過(guò)對(duì)比發(fā)現(xiàn)了一個(gè)問(wèn)題,兩種請(qǐng)求的響應(yīng)頭不一樣

從服務(wù)器取到的數(shù)據(jù).png
本地map的數(shù)據(jù).png

所以怎么修改 response 的 content type 類型為 json/application 呢?

三、使用 Rewrite 替換特定接口的響應(yīng)頭參數(shù)

打開(kāi)rewrite.png

打開(kāi) Rewrite

rewrite配置頁(yè)面.png

Rewrite 配置頁(yè)面簡(jiǎn)介

1、首先創(chuàng)建一個(gè)規(guī)則集

添加接口集合和適用范圍.png

添加 Rewrite 替換規(guī)則

書(shū)寫rewrite替換規(guī)則.png

這里相當(dāng)于是在響應(yīng)回來(lái)之前,通過(guò)字段的匹配,替換掉原有的響應(yīng)頭中的Content-Type 類型為 json/application

所有的對(duì)話框都點(diǎn)擊 ok 或者 apply 確定保存

現(xiàn)在我們開(kāi)始測(cè)試?yán)?,繼續(xù)調(diào)用該接口。

四、根據(jù)需求修改數(shù)據(jù)

數(shù)據(jù)修改前剛才看過(guò)了,只有 title/content/type 三個(gè)字段

{
"title":"標(biāo)題",
"content":"內(nèi)容正文",
"type":"類型"
}

而現(xiàn)在需要添加 “id” 字段。所以,用 vim 或者其他文本編輯器打開(kāi)剛才保存的 response 文件,將他修改成這樣

{
"id":"00000001",
"title":"標(biāo)題",
"content":"內(nèi)容正文",
"type":"類型"
}

修改后記得保存一下,現(xiàn)在重新開(kāi)始請(qǐng)求該接口,查看log日志。

{
"id":"00000001",
"title":"標(biāo)題",
"content":"內(nèi)容正文",
"type":"類型"
}

完美!下面開(kāi)始愉快的測(cè)試我們自己的代碼吧~


總結(jié):

本文的目的主要是為了提高客戶端和服務(wù)器各自獨(dú)立開(kāi)發(fā)的能力,像制造特定的假數(shù)據(jù)這種很簡(jiǎn)單的需求,如果不借助 Charles 代理去自己制造,恐怕你需要自己搭建一個(gè)服務(wù)器去各種惡補(bǔ)服務(wù)器的知識(shí)了。其實(shí)我們的原理十分簡(jiǎn)單,就是通過(guò)代理軟件對(duì)網(wǎng)絡(luò)請(qǐng)求進(jìn)行攔截,并且返回我們想要的數(shù)據(jù)。這樣做的好處就是,大大加強(qiáng)了客戶端的自主開(kāi)發(fā)能力,不需要依賴服務(wù)器對(duì)我們的特定邏輯進(jìn)行開(kāi)發(fā),縮短開(kāi)發(fā)周期。節(jié)約大家的時(shí)間,試想如果我們自己制造的數(shù)據(jù)如果在app中能跑通,即便服務(wù)器開(kāi)發(fā)出來(lái),如果出現(xiàn)跑不通的錯(cuò)誤,那問(wèn)題最有可能出現(xiàn)在服務(wù)器端,當(dāng)然還要看具體的反饋信息。Charles 還有很多強(qiáng)大的功能,有待大家慢慢探索,祝大家玩得開(kāi)心~

原文博客地址:http://yangchao0033.github.io/blog/2016/03/05/develop-moblie-api-with-charles-and-server-data-with-charles/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,569評(píng)論 19 139
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 12,427評(píng)論 6 13
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,315評(píng)論 0 15
  • 每天一篇簡(jiǎn)書(shū)打卡,不知覺(jué)也堅(jiān)持了38天。回想一路走來(lái),即使中間曾經(jīng)休假,曾經(jīng)為寫作打卡熬到凌晨,終究也逼了自己一把...
    057Bonnie閱讀 241評(píng)論 2 0
  • 昨晚跑群約跑,今早五點(diǎn)半集合??吹焦?,內(nèi)心蠢蠢欲動(dòng)。腦袋里兩個(gè)小人在打架,“去吧!難得的機(jī)會(huì),這個(gè)星期就跑了...
    寒月零星閱讀 388評(píng)論 0 0

友情鏈接更多精彩內(nèi)容