MTURLProtocol 版本 0.1.2

MTURLProtocol 版本 0.1.2

bigyelow 维护。



MTURLProtocol 版本 0.1.2

  • 作者
  • huangduyu

MTURLProtocol

CI Status Version License Platform

1. 简介

MTURLProtocol 是 NSURLProtocl 的子类,并且是 子类限制的。它用于避免在单个应用程序中实现多个 NSURLProtocol 子类,因为多个 NSURLProtocol 子类将使跟踪和调试网络流量变得困难。此外,多个 NSURLProtocol 将影响网络效率。

如果您已经实现了多个 NSURLProtocol 子类并且发现维护这些代码不方便,那么现在是时候考虑迁移到使用 MTURLProtocol 来实现相同的功能了。

MTURLProtocol 是以协议为中心的。主要思想是提供 3 个协议:为装饰请求、dataTask 和响应提供 MTRequestHandlerMTTaskHandlerMTResponseHandler

2. 结构

ecc48ed2-a92c-11e8-9084-9edb982ab8c6

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. 作者

[email protected]

8. 许可

MTURLProtocol 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。