21.Swift轻量级网络封装:SwiftyServiceProtocol(适用于混编或纯Swift项目)
一、前言
随着Swift越来越成熟,越来越多的项目也开始使用Swift了。很多朋友应该都有遇到和OC混编的情况。
我自己的话,纯Swift和混编的都做过。在爽过纯Swift后,在混编时经常会有被困住手脚的感觉。
尤其这两年的公司项目,很多老代码和必须依赖的基础库都是OC。特别是网络库(基于AFN),又不能不用公司的。
但是在使用过Swift的Moya框架后,对于在混编的Swift中不能写出很Swift的网络请求这件事尤为难受。
于是有了想解决这点痛苦的想法。就有了 SwiftyServiceProtocol
对
Swift
的协议
枚举
泛型
等有一定了解的话会很便于理解
二、封装目标
不依赖任何三方网络库
便于更换底层网络库(AFN? Alamofire? 自研网络库? 无痛切换。极端一点你甚至可以不同模块使用不同网络库)
用起来很Moya很Swifty
兼容多模块多域名
轻量
用于纯Swift项目或者混编项目(不考虑OC调用。原因:单纯的不喜欢)
便于模块化处理
三、SwiftyServiceProtocol
源码在此:GitHubSwiftyServiceProtocol喜欢的话点个小星星吧⭐️
这个协议十分轻量,不算注释也就12行代码。
3.1 在项目中对 SwiftyServiceProtocol 进行拓展
3.2 实际使用
这里以用户模块的一些请求为例
定义相关Service
调用场景
四、总结
这个协议我自己已经在两个混编项目中使用了,如果你也喜欢的话,欢迎来点个小星星⭐️GitHub_SwiftyServiceProtocol
参考: Moya
Last updated