GTNetworking 是基于 GTNetwork 改进的,更改了命名规范,是基于 [AFNetworking][AFNetworking] 封装的 iOS 网络库,其实现了一套 High Level 的 API,提供了更高层次的网络访问抽象。
与 AFNetworking 相比,GTNetworking 提供以下更高级的功能:
- 支持按时间缓存网络请求内容
- 支持按版本号缓存网络请求内容
- 支持统一设置服务器和 CDN 的地址
- 支持检查返回 JSON 内容的合法性
- 支持文件断点续传
- 支持
block
和delegate
两种模式的回调方式 - 支持批量网络请求发送,并统一设置它们的回调(实现在
GTBatchRequest
类中) - 支持方便地设置有相互依赖的网络请求的发送,例如:发送请求 A,根据请求 A 的结果,选择性发送请求 B 和 C,再根据 B 和 C 的结果,选择性发送请求 D。(实现在
GTChainRequest
类中) - 支持网络请求 URL 的 filter,可以统一为网络请求加上一些参数,或者修改一些路径。
- 定义了一套插件机制,可以很方便地为 GTNetworking 增加功能。猿题库官方提供了一些插件,可以在某些网络请求发起时,在界面上显示“正在加载”的 HUD。
GTNetworking 的基本思想是将每个网络请求封装成对象。因此,使用 GTNetworking 时,您每个请求都必须继承 GTRequest
类,通过覆盖父类的一些方法来构造特定的网络请求。
将每个网络请求封装成对象实际上是使用了设计模式中的 Command 模式,它有以下好处:
- 将网络请求与具体第三方库依赖隔离,方便以后更换底层的网络库。
- 方便在基类中处理公共逻辑,例如猿题库的数据版本号信息就统一在基类中处理。
- 方便在基类中处理缓存逻辑,以及其它一些公共逻辑。
- 方便进行对象的持久化。
安装
你可以在 Podfile 中加入以下一行代码来使用 GTNetworking
pod 'GTNetworking'
作者
liuxc123, [email protected]
协议
GTNetworking 遵循 MIT 许可协议。更多信息请查看 LICENSE 文件。