Moya 解读
通常Swift 使用的网络框架是 Alamofire, 对于一些网络请求的细节经常还要单独处理, 比较头疼.
Alamofire
回顾一下 Alamofire 的网络请求方式:
1 | 1. 带参数请求 |
看上面 Alafmofire, 调用方式简单, 如果对头部信息, 参数 等详细信息区分做处理,写专有网络层, 就糟心了.一般我们会花费一部分精力去考虑, 封装一个网络抽象层, Network Layer.
Moya
特色
- 编译时检查正确的 API 端点访问.
- 允许你使用枚举关联值定义不同端点的明确用法.
- 将 test stub 视为一等公民, 所以单元测试超级简单.
思想
提供一些网络抽象层, 他们经过充分的封装, 并且调用 Alamofire. 他们能足够简单轻松地应对常见任务,
也应该足够全面, 应对复杂任务.
Alamofire 抽象专有网络层NetworkLayer, 无非就是对接口参数, 请求 path 等 ,做处理.
Moya 就很好的包装了 Alamofire 对网络的数据请求所需的信息. 比如上面说的通过枚举关联值定义不同端点.
Moya 的专有网络层, 和我们平时自己封装的有什么不同?
moya 解决了: 1. 编写新项目困难 2. 维护现有项目困难 3. 单元测试困难
如上图可以看出, 自己写的Network Layer
并不能解决所有的网络请求封装需要, 但是 Moya 就很自信的阻断了 Alamofire, 和 app 直接接触. 可见性能以及体量是有多大.
总结: Moya 相当于 Alamofire 和 app 之间的一个 network layer