iOS网络请求库

这已经是老生常谈的问题了。

作为一个入门级、大众级的封装,仿佛在网上随随便便就能找到一套适用于自己的方案。在afnetworking一统天下之后(得到了苹果官方认可),基于其afnetworking的封装也越来越全面、强大。

但是,每一个开发者都想拥有属于自己的网络请求库☺,而且很多别人的封装用起来隔靴搔痒,所以我们在整理了项目内所有网络请求的痛点之后,搞了一套最适合我们自己的方案。

我们现在就用最流行的“影响地图”来解构这套框架。
由于类名有所修改,所以这个框架图可以参考来看

解构图

这套方案能为我们带来什么
相比于afnetworking,ZZCHTTPSession提供了以下功能:

  • 支持硬盘缓存网络请求内容
  • 支持内存缓存网络请求内容(参考sdwebimage,分为内存缓存和硬盘缓存)
  • 支持缓存同一URL,某个参数value不同的情况
  • 支持缓存的统一清除管理
  • 保证返回 JSON 内容的合法性
  • 支持统一设置URL地址,测试域名、自定义域名管理
  • 请求和回调的分离,比如登陆之后,只需要管理需要重新请求的signal就好了,不用回到具体的页面处理。
  • 支持批量的网络请求发送,并统一设置它们的回调(直接把signal作为数组进行请求)
  • 可以统一为网络请求加上一些参数,或者修改一些路径。

适用项目
除了URL的管理稍显复杂之外,其他都尽量向轻量级,适用性靠拢。
适合中小型项目的开发使用,个人开发尤其推荐(使用链式的方式传参,完全是不想声明那么多的API啊,尽管有一部分开发试听抗拒这种方式的😂)。

支持大部分APP对URL管理、内存硬盘缓存、多个请求管理、model管理的要求。对依赖路由的APP能发挥最大优势。(完全解耦)

基本思想
ZZCURLManagement配置URL,ZZCHTTPSessionSignal配置请求,建议加一个协议层,用来管理所有的signal。
协议层使用ZZCHTTPServer的分类。

简单demo:

一、创建signal:
 
LZHTTPSessionSignal *signal = [LZHTTPSession creatSignalWithUrl:@"https://m.zuzuche.com/w/book/api/app/faq/index.php" maker:^(LZHTTPRequestMaker * _Nonnull make) {
    make.get();
    make.cachePolicy(LZHTTPRequestCachePolicyOlCache);
}];
 
二、实现回调:
 
signal.complete = ^(NSInteger code, NSString * _Nonnull msg) {
    NSLog(@"%@",msg);
};
 
signal.success = ^(id  _Nonnull data, BOOL isCache) {
    NSLog(@"%@",data);
};
 
三、发起请求:
[signal request];


相关使用:

更新请求配置:
- (void)updateWithMaker:(void(^)(LZHTTPRequestMaker *make))makeBlock;
 
设置自定义域名:
[LZHTTPSession setCustomHost:@"m_app.zuzuche.net"];
 
更改当前环境:
[LZHTTPSession setEnviStateIfDev:true];
 
配置urlId,推荐使用urlId来创建signal
LZSetUpUrlId(NSString *module_id,NSString *url_id,NSString *formal_url,NSString *dev_url);
 
读取缓存:
- (void)readCache;
 
模拟请求读取本地数据:
- (void)fakeRequestWithFilePath:(NSString *)filePath delay:(float)delay;
 
详细见注释。

git地址:
https://github.com/lzy1010/ZZCHTTPManager

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,188评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,464评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,562评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,893评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,917评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,708评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,430评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,342评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,801评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,976评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,115评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,804评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,458评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,008评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,135评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,365评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,055评论 2 355

推荐阅读更多精彩内容

  • DCL用于账户以及权限的管理 创建用户 删除用户 用户授权 撤销授权 查看权限 一. 创建用户 用户只能在指定的I...
    quo_vadis阅读 226评论 0 0
  • 今天,我看完了漫画版的《孔子说》,从开头的孔子无论当的官大还是小,办的事都井井有条,看来孔子确实是个能人呀! ...
    非言飞语阅读 1,252评论 1 2
  • 这是一个哑光黄铁大门,宽约二米半,高约三米,镶嵌在红砖砌成的门楼里,和附近所有的人家大门差不多,一眼望过去显得高大...
    华枝春满5339阅读 436评论 0 0
  • 世界很大,累了困了我们还有诗和远方;世界很小,小的只有乏味的苟且。 我们通过眼耳了解世界,我们旁听别人所言是为清规...
    胭脂先森阅读 176评论 0 0