MTURLProtocol
1. 简介
MTURLProtocol 是 NSURLProtocl 的子类,并且是 子类限制的。它用于避免在单个应用程序中实现多个 NSURLProtocol 子类,因为多个 NSURLProtocol 子类将使跟踪和调试网络流量变得困难。此外,多个 NSURLProtocol 将影响网络效率。
如果您已经实现了多个 NSURLProtocol 子类并且发现维护这些代码不方便,那么现在是时候考虑迁移到使用 MTURLProtocol 来实现相同的功能了。
MTURLProtocol 是以协议为中心的。主要思想是提供 3 个协议:为装饰请求、dataTask 和响应提供 MTRequestHandler
、MTTaskHandler
、MTResponseHandler
。
2. 结构
2.1 处理请求
一个请求将由您的(多个)MTRequestHandler 协议实例按添加顺序处理。在发送装饰请求之前,您有机会选择一个 MTTaskHandler 协议实例来装饰 MTURLProtocl 实例中使用的 dataTask。
2.1.1 处理本地请求
您可以通过实现 MTLocalRequestHandler 协议来即时返回响应和响应数据。
2.2 处理响应
MTURLProtocol 实例会根据相关的 原始请求
(装饰之前的请求)和 最终请求
(发送之前的请求)选择 唯一一个 MTResponseHandler 协议实例来处理响应。
之前,您可能使用多个 NSURLProtocol 实例来处理不同的响应。如果超过 2 个 NSURLProtocol 实例处理一个请求,当迁移时你可能需要将逻辑合并到一个 MTResponseHandler 协议实例中。
3. 示例
请参考 MTURLProtocl-Example
项目中的示例。
MTTestRequestHandler
+MTTestResponseHandler
:装饰远程请求和响应MTTestLocalRequestHandler
:装饰本地请求并立即返回响应- 没有为
MTTaskHandler
提供示例,但它的实现也像上面的处理程序一样简单。
4. 安装
MTURLProtocol 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'MTURLProtocol'
5. 使用 MTURLProtocol 的项目和应用程序
6. 变更日志
- 0.1.2: Podfile 源代码的小幅修复。
- 0.1.1: 添加演示。
- 0.1.0: 第一个版本。
7. 作者
8. 许可
MTURLProtocol 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。