原创文章,转载请注明出处。
在做开发的时候app和api定义好接口文档后,都是同步进行开发的。app端需要api的数据该怎么办呢,这就牵涉到一个名词叫做Mock。他根据我们的网络请求生成模拟数据供app端调试。
我这里使用了Charles的Map功能来Mock网络请求,Charles的Map功能分为Map Remont和Map Local,从字面意思我们可以知道,Map Remont可以将请求Map到另一个远程地址,Map Local可以将请求Map到一个本地文件。这里我们主要说怎么Map到本地文件,我们以json格式作为网络请求数据格式为例来说明。
准备Json数据
根据api文档我们准备好json数据,因为这个json是手写的,可能存在各种错误。这时候我们需要校验json字符串,我是使用BeJson来进行校验的,界面如下:
BeJson
把Json字符串复制到输入框中,点左上角的格式化Json数据按钮,可以检查Json字符串,检查通过后,点左下角的保存按钮,将Json保存到本地文件。
Map网络请求到本地文件
打开Charles,点击Tools-Map Local...,弹出这个界面
Map Local
选中Enable Map Local复选框,点击Add按钮添加一条Mapping
Add Mapping
Protocol分为http和https,我们选择Protocol为http;Host内容我们使用www.baidu.com;Port我们使用默认的80端口;Path我们使用/mock;Query我们不做设置(这里可以根据Query来Map到不同的文件,请自行体验);Local path我们选择了本地PaySuccessOrder2.json文件,点击Ok完成设置。这里有一个小技巧就是可以将整个请求链接http://www.baidu.com/mock复制到Host输入框里,Charles就自动给我们设置好Protocol、Host、Port、Path和Query了。
使用Charles代理
打开手机的WIFI,保证手机与PC在同一个无线局域网内,设置手机代理地址为PC的IP地址,端口填8888。如果是使用Simulator来做调试,需要在打开Simulator之前打开Charles,并勾选Proxy-macOS Proxy。
更多Charles的代理设置请参考其他文章(例如证书等等,这里我们不展开说明了)。
享受Map Local的快感
恭喜你,现在可以享受Map Local的快感了,使用Safari访问http://www.baidu.com/mock返回的数据是不是已经变成你设置的json了,在代码里也可以直接访问这个地址。