资料介绍
软件简介
MGJRequestManager 是一款基于 AFNetwokring 2.0+ 的 iOS 网络库。
一般在做项目时,我们都会在 AFNetworking 的基础上再封装一层,加入一些业务逻辑,然后作为统一的 API 层。细分下来的话,功能点其实不多,且相对固定和通用,就索性把这些常用的功能统一处理,并提供灵活的使用方式,于是就有了 MGJRequestManager。
MGJRequestManager 目前被用在「蘑菇街」,「小店」等 App 中,已稳定运行了一段时间。
强大
以「蘑菇街」为例,统计这块会计算请求消耗的时间、每次请求都要发送的参数、据请求参数的值计算 token、缓存请求以便快速呈现等等,MGJRequestManager 都可以比较方便地搞定。
主要功能
-
缓存GET请求(可以方便地开启/关闭)
-
设置 Builtin 参数(每次请求都会带上的参数,如设备型号等)
-
符合某种(自定义)条件时,可以不发送请求(比如用户多次点击「喜欢」按钮)
-
对请求结果做预处理(比如将服务端返回的数据包装成统一的格式)
-
串行发送多个请求(比如 token 过期后,可以将请求新 token 和当前请求串起来)
-
并行发送多个请求,可以告知请求完成数,以及全部请求完成后调用某个 callback
-
上传图片
-
取消正在发送的请求
灵活
因为需求经常会变,所以架构需要非常灵活才能方便应对新功能,比如「发送请求时显示 loading,发送完成后隐藏 loading」这个只是利用了现成的接口实现的一个特性。一些常见的需求都可以通过对 MGJRequestManager 进行配置来实现。
思想
本着「everything should be as simple as possible, but not simpler」的原则,设计这个类库时,希望使用起来和理解起来尽量方便,同时又足够灵活,可以应付大多数的场景。
主要分为两部分 MGJRequestManagerConfiguration
和 MGJRequestManager
,前者做一些自定义配置,比如请求发送前/后的预处理,baseURL,userInfo等。后者记录下这些信息,在适当的时候消费它们,同时支持针对某些特殊请求做自定义配置。
安装
pod 'MGJRequestManager'
gif 演示
使用
以「发送请求时显示 loading,发送完成后隐藏 loading」为例
// 1 MGJRequestManagerConfiguration *configuration = [[MGJRequestManagerConfiguration alloc] init]; UIActivityIndicatorView *indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; indicatorView.frame = CGRectMake(self.view.frame.size.width / 2 - 8, self.view.frame.size.height / 2 - 8, 16, 16); [self.view addSubview:indicatorView]; // 2 configuration.requestHandler = ^(AFHTTPRequestOperation *operation, id userInfo, BOOL *shouldStopProcessing) { if (userInfo[@"showLoading"]) { [indicatorView startAnimating]; } }; // 3 configuration.responseHandler = ^(AFHTTPRequestOperation *operation, id userInfo, MGJResponse *response, BOOL *shouldStopProcessing) { if (userInfo[@"showLoading"]) { [indicatorView stopAnimating]; } }; [MGJRequestManager sharedInstance].configuration = configuration; // 4 [[MGJRequestManager sharedInstance] GET:@"http://httpbin.org/delay/2" parameters:nil startImmediately:YES // 5 configurationHandler:^(MGJRequestManagerConfiguration *configuration){ configuration.userInfo = @{@"showLoading": @YES}; // 6 } completionHandler:^(NSError *error, idresult, BOOL isFromCache, AFHTTPRequestOperation *operation) { [self appendLog:result.description]; // 7 }];
-
MGJRequestManager
要配合MGJRequestManagerConfiguration
才能发挥出威力。这个 configuration 可以配置baseURL
,requestHandler
,responseHandler
等信息,可变部分一般是通过对MGJRequestManagerConfiguration
进行配置来实现的。可以全局设置一个 configuration,然后单独发送请求时还可以覆盖默认设置。 -
requestHandler
这个 block 会在请求发送前被触发,userInfo
这个参数时configuration
这个实例的一个属性,方便起见,作为参数传给了requestHandler
。还有一个重要的参数时*shouldStopProcessing
,如果在这个 block 里,它被设置为了YES
,那么这个请求将不会被发送。 -
responseHandler
这个 block 会在收到服务端的响应后被触发,response
参数有error
和result
两个属性,服务端返回的数据都被放到了result
属性里,在这里可以对它进行解析,然后重新设置 response。如果*shouldStopProcessing
被设置为了YES
,那么completionHandler
就不会被触发。 -
POST/PUT/DELETE 只需把 GET 换成对应的 HTTP Method 即可。
-
startImmediately
如果设为NO
,那么这个请求不会被发送,可以将来通过调用-[MGJRequestManager startOperation:]
来发送,或者也可以放到队列里。 -
这里会传入默认的 configuration,如果需要在这个请求做一些个性化设置,可以修改 configuration 里相应地配置。
-
这里的
result
就是-[MGJResponse result]
,error
是-[MGJResponse error]
,isFromCache
表示这个结果是否来自缓存。
- LABVIEW NPOI库文件下载 192次下载
- altium designer元件库下载 703次下载
- STM32f10x官方固件库资料 151次下载
- STM32f10x官方固件库资料 65次下载
- AD常用3D封装库(STEP)下载 370次下载
- AD 2D标准封装库下载 22次下载
- 苹果ios蓝牙调试助手工具源代码下载 7次下载
- 将置信规则库分级优化的网络安全态势预测方法 11次下载
- 数据库教程之信息管理网络数据库应用系统实例资料概述 8次下载
- protel99建库规则大全 0次下载
- AN1246中文手册之如何在Microchip图形库中创建控件
- 通用封装库(protel/AD版本通用)资料下载 0次下载
- iOS-多线程网络-多图下载案例 1次下载
- Android开发的各大网络请求库实际案例 4次下载
- 一种网络图像数据库的快速检索方法
- 深度学习常用的Python库 361次阅读
- Linux中的静态库和共享库 850次阅读
- 一款适合初学者超轻量级C语言网络库—Dyad 1594次阅读
- libcurl等第三方库的通用编译方法 1655次阅读
- 苹果为什么不能更新ios15 2.7w次阅读
- 苹果怎么更新ios15? 5337次阅读
- 云数据库和自建数据库的区别及应用 4412次阅读
- 关于数据库安全威廉希尔官方网站 的概述 1785次阅读
- 你的苹果升级到iOS 12.1.2了吗新系统出现无法连接网络的BUG 1.4w次阅读
- 苹果iOS 12.1.2无法使用数据网络连接网络如何解决 1.5w次阅读
- iOS中搭建IPv6网络的测试环境 6653次阅读
- 谷歌开发一个轻量级的库——TFGAN 它可以让生成对抗网络更易于实验 5412次阅读
- NVIDIA深度神经网络加速库cuDNN软件安装教程 2222次阅读
- STM32标准库改为HAL库的程序实现 3.4w次阅读
- 盘点几种深度学习库 3063次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多