美文网首页IOS程序员
iOS开发之模拟接口假数据

iOS开发之模拟接口假数据

作者: 学iOS也不会取名字 | 来源:发表于2017-12-30 15:26 被阅读0次

一、前言

我们在iOS开发的过程中,往往后端和前端都是并行的,当后端的接口没有完善的时候就会影响到我们的开发,而我也在我编程的过程中也经历过很多方法去制造假数据,下面我就一一说一下吧。

一起学习iOS开发,加群:681503716 加群邀请码:【墨子】,一起来学习吧!

二、方法

下面我们以如下的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.3 APP端修改服务器数据

这里我们以 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, 他可以伪造的网络数据和模拟的缓慢网络来进行调试。

传送门->OHHTTPStubs

2.4 代理拦截网络请求

这个是我比较推荐的一个方案,不需要修改app端代码。一切无损对接后台。

这就是利用代理软件的 Map Local 功能,将请求转换为请求电脑本地的静态json文件。

我们以Charles为例,我们把本地的接口写好之后,我们使用Charles抓一下这个接口的请求,此时肯定是失败的。

如图:

我们去 Map Local 指向电脑中的一个json文件。

如图:

这样我们就将此接口指向了电脑本地的一个json文件,我们可以用此方法,将所有的接口都分别指向本地的各自的 json 文件,当后台接口完毕后,我们就可以关闭 Map Local 无缝衔接到真正的后台。

本文涉及到的部分代码 -> 点我下载

三、总结

以上四个方法,我的推荐程度是由小到大的。我认为最好不要去动APP的代码,所以我推荐第四种,赶快去尝试一下吧!你用的哪种呢?欢迎留言交流。

参考与延伸:

相关文章

  • iOS开发之模拟接口假数据

    一、前言 我们在iOS开发的过程中,往往后端和前端都是并行的,当后端的接口没有完善的时候就会影响到我们的开发,而我...

  • iOS开发之模拟接口假数据

    一、前言 我们在iOS开发的过程中,往往后端和前端都是并行的,当后端的接口没有完善的时候就会影响到我们的开发,而我...

  • mock

    mock使用优势:前后端同时开发的时候,后端接口数据没有出来,前端可以mock假数据,模拟开发 1,安装mock依...

  • 前端虚拟接口mockJs的接入

    标签(空格分隔): mockjs 模拟接口数据 前后端分离开发 序 前端模拟接口数据的方式,大概分为以下...

  • 使用 fds 来 mock 模拟 http 接口数据的方法

    本人是一名 iOS 开发工程师,在平时的开发过程中,在后台接口没有写好的时候,经常需要自己模拟各种接口数据,这里介...

  • Python之接口开发

    一、开发接口的作用 1、在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,...

  • iOS 假数据,json数据

    iOS 假数据,json数据 通常在开发阶段经常需要模拟一些数据来进行布局,这里就跟大家分享下自己的方式 首先我们...

  • iOS开发之NSURLSessionUploadTask上传数据

    iOS开发之NSURLSessionUploadTask上传数据 iOS开发之NSURLSessionUpload...

  • RAP+MockJS创建Mock测试数据

    前言 在项目开发中经常会用到模拟接口或者说是假数据,一般做法是 读取本地json文件 写死一个数据对象 使用本地接...

  • Vue项目开发mock数据

    数据模拟 一、使用开发服务器配置before选项,可以直接编写接口,提供mock数据 编写接口 调用 二、代理,使...

网友评论

    本文标题:iOS开发之模拟接口假数据

    本文链接:https://www.haomeiwen.com/subject/nlzggxtx.html