21.Swift轻量级网络封装:SwiftyServiceProtocol(适用于混编或纯Swift项目)

一、前言

随着Swift越来越成熟,越来越多的项目也开始使用Swift了。很多朋友应该都有遇到和OC混编的情况。

我自己的话,纯Swift和混编的都做过。在爽过纯Swift后,在混编时经常会有被困住手脚的感觉。

尤其这两年的公司项目,很多老代码和必须依赖的基础库都是OC。特别是网络库(基于AFN),又不能不用公司的。

但是在使用过Swift的Moya框架后,对于在混编的Swift中不能写出很Swift的网络请求这件事尤为难受。

于是有了想解决这点痛苦的想法。就有了 SwiftyServiceProtocol

Swift协议 枚举 泛型等有一定了解的话会很便于理解

二、封装目标

  1. 不依赖任何三方网络库

  2. 便于更换底层网络库(AFN? Alamofire? 自研网络库? 无痛切换。极端一点你甚至可以不同模块使用不同网络库)

  3. 用起来很Moya很Swifty

  4. 兼容多模块多域名

  5. 轻量

  6. 用于纯Swift项目或者混编项目(不考虑OC调用。原因:单纯的不喜欢)

  7. 便于模块化处理

三、SwiftyServiceProtocol

源码在此:GitHubSwiftyServiceProtocol喜欢的话点个小星星吧⭐️

这个协议十分轻量,不算注释也就12行代码。

3.1 在项目中对 SwiftyServiceProtocol 进行拓展

3.2 实际使用

这里以用户模块的一些请求为例

定义相关Service

调用场景

四、总结

这个协议我自己已经在两个混编项目中使用了,如果你也喜欢的话,欢迎来点个小星星⭐️GitHub_SwiftyServiceProtocol

参考: Moya

Last updated

Was this helpful?