iOS開發之模擬介面假資料
一、前言
我們在iOS開發的過程中,往往後端和前端都是並行的,當後端的介面沒有完善的時候就會影響到我們的開發,而我也在我程式設計的過程中也經歷過很多方法去製造假資料,下面我就一一說一下吧。
二、方法
下面我們以如下的JSON欄位進行一下說明
{
"code": 0,
"message": "成功",
"data": {
"website":"https://www.ianisme.com",
"list": [
{
"day": "30",
"month": "10",
"year": "2017"
}
]
}
}
2.1 Dictionary假資料
這種方法應該說是最不建議使用的方法了。假設我們工程中使用的是JSModel進行Model層轉換的。
我們需要這樣寫一個NSDictionary
請點選此處輸入圖片描述
如圖所示我們就可以這樣去寫假資料了。這種方法是每次都要去修改和編輯大量程式碼,並且關於網路請求的程式碼還測試不了,不推薦使用。
2.2 搭建後臺假資料
我們可以本地用搭建一個網站環境或者使用遠端伺服器去請求。
我會儲存一個json檔案,然後用一個php檔案去呼叫。
header("Content-type: text/html; charset=utf-8");
$test = $_POST["s"];
$json_string = file_get_contents($test . '.json');
echo $json_string;
這種情況下,我們可以直接把app端的網路請求程式碼全部寫好,就相當於模仿後臺的介面一樣,到時候切換後臺介面我們只需要更換下介面地址就行了。
2.3APP端修改伺服器資料
這裡我們以 AFNetworking2.x 為例使用 NSURLProtocol 攔截 HTTP 請求。
建立NSURLProtocol的一個子類,重寫裡面的startLoading方法。
- (void)startLoading
{
NSMutableURLRequest *mutableReqeust = [[self request] mutableCopy];
[NSURLProtocol setProperty:@YES forKey:hasInitKey inRequest:mutableReqeust];
if([mutableReqeust.URL.description containsString:@"api.ianisme.com"]) {
NSDictionary *dic = @{
@"code": @0,
@"message": @"成功",
@"data": @{
@"website": @"https://www.ianisme.com",
@"list": @[
@{
@"day": @"30",
@"month": @"10",
@"year": @"2017"
}
]
}
};
NSData *tempData = [self toJSONData:dic];
NSString *jsonString = [[NSString alloc] initWithData:tempData
encoding:NSUTF8StringEncoding];
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSURLResponse *response = [[NSURLResponse alloc] initWithURL:mutableReqeust.URL
MIMEType:@"text/html"
expectedContentLength:data.length
textEncodingName:nil];
[self.client URLProtocol:self
didReceiveResponse:response
cacheStoragePolicy:NSURLCacheStorageNotAllowed];
[self.client URLProtocol:self didLoadData:data];
[self.client URLProtocolDidFinishLoading:self];
}
else{
self.myConnection = [NSURLConnection connectionWithRequest:mutableReqeust delegate:self];
}
}
此方法我們可以把相關網路請求寫好,然後原生程式碼攔截後臺的網路請求,用假資料修改就行了。以上只是一個原理的演示,實際開發,推薦使用強大的開源庫OHHTTPStubs, 他可以偽造的網路資料和模擬的緩慢網路來進行除錯。
2.4代理攔截網路請求
這個是我比較推薦的一個方案,不需要修改app端程式碼。一切無損對接後臺。
這就是利用代理軟體的 Map Local 功能,將請求轉換為請求電腦本地的靜態json檔案。
我們以Charles為例,我們把本地的介面寫好之後,我們使用Charles抓一下這個介面的請求,此時肯定是失敗的。
如圖:
我們去 Map Local 指向電腦中的一個json檔案。
如圖:
這樣我們就將此介面指向了電腦本地的一個json檔案,我們可以用此方法,將所有的介面都分別指向本地的各自的 json 檔案,當後臺介面完畢後,我們就可以關閉 Map Local 無縫銜接到真正的後臺。
三、總結
以上四個方法,我的推薦程度是由小到大的。我認為最好不要去動APP的程式碼,所以我推薦第四種,趕快去嘗試一下吧!
相關文章
- 利用Easy Mock簡單模擬開發資料介面Mock
- Mockjs 前端介面資料模擬MockJS前端
- 呼叫後端介面 / 模擬資料後端
- 使用 mock 模擬登入介面資料Mock
- 前端模擬介面資料(mock)實踐前端Mock
- node-express框架本地模擬介面資料Express框架
- 使用 express 模擬後臺介面返回資料Express
- 前端之資料模擬之Mock.js前端MockJS
- iOS開發之解析XML格式資料iOSXML
- 微信開發之小程式模擬json資料實現頁面除錯JSON除錯
- iOS 11開發教程(五)iOS11模擬器介紹二iOS
- iOS 11開發教程(四)iOS11模擬器介紹一iOS
- 暑集假訓SCP提高擬模21
- 模擬資料庫之部門員工資料庫
- 前後臺分離之資料模擬
- 雷達報文模擬回放/雷達資料模擬發生器
- iOS 模擬器iOS
- PHP 開發量化交易的工具,模擬交易所 API 資料。PHPAPI
- iOS開發之SQLite–C語言介面規範(五):iOS開發使用SQLite例項iOSSQLiteC語言
- Curl模擬提交資料
- 前端資料模擬方案前端
- Oralce建立模擬資料
- Openwrt使用Qemu模擬開發。
- iOS開發 - 介面尺寸指南iOS
- 資料模擬神器 easy-mock 正式開源Mock
- iOS開發中,whistle的安裝使用及模擬器代理配置iOS
- 模擬修復AD資料
- JMeter 擴充套件開發:BeanShell 資料模擬實現及效能探討JMeter套件Bean
- 生成iOS模擬器BuildiOSUI
- 使用 node 模擬請求介面
- STM32模擬SPI介面
- 韌體動態模擬之網路介面的淺析
- iOS開發之AES+Base64資料混合加密與解密iOS加密解密
- iOS 開發之— NSURLProtocoliOSProtocol
- iOS開發之WebViewiOSWebView
- iOS開發之GCDiOSGC
- 後端拜拜,用不到你了,前端開發資料模擬神器nodejs後端前端NodeJS
- 資料介面卡工具的開發