Booming 是一个为 Swift 开发的基类网络库。针对 Swift 5 开发,旨在利用最新的语言特性。该框架的最终目标是实现易于编写且易于维护的网络代码。
HollowCodable 是一个使用属性包装库(Property Wrappers)为 Swift 定制的编码库。
RxNetworks 是一个声明式和响应式 Swift 网络库。
🧚. RxSwift + Moya + HandyJSON/Codable + 插件。👒👒👒
英文 | 简体中文
这是一个基于 Moya 的新型网络 API 套件,同时支持使用 RxSwift 的响应式网络。
目前,Booming 最重要的特性可以总结如下:
- 支持与 RxSwift 结合的响应式网络请求。
- 支持面向对象编程(OOP)和过程式对象编程(POP)网络请求。
- 支持使用 HandyJSON 和 Codable 解析数据。
- 支持配置通用请求路径、通用参数等。
- 支持自定义多种网络插件,如 Moya。
- 支持上传和下载文件/资源等。
- 支持使用
BoomingSetup.basePlugins
添加默认插件。 - 支持使用 Alamofire 的 RequestInterceptor 配置授权证书。
- 支持自动管理 hud 插件。
- 支持对 token 插件进行验证,并自动重试新的 token 请求。
- 支持使用已包装的 18 个插件。
如何使用 行为准则。
SharedAPI.userInfo(name: "yangKJ").request(success: { json, finished in
// do somthing..
}, failure: { error in
print(error.localizedDescription)
})
or
TokenAPI.auth.request(complete: { res in
switch res {
case let .success(json):
// do somthing..
case let .failure(error):
print(error.localizedDescription)
}
})
该模块主要基于 moya 包装箱网络相关的插件。
- 目前,已为您包装了14个插件供使用
适用于ios平台
如果您想使用令牌插件和认证插件,可以参考项目用例。
- 认证:认证插件。
🎷 简单易用,在API协议中实现协议方法,然后将插件添加到其中。
var plugins: APIPlugins {
let cache = NetworkCachePlugin.init(options: .cacheThenNetwork)
let loading = NetworkLoadingPlugin.init(options: .init(delay: 0.5))
let warning = NetworkWarningPlugin.init()
let shared = NetworkSharedPlugin.init()
let gzip = NetworkGZipPlugin.init()
return [loading, cache, warning, shared, gzip]
}
此模块主要支持响应式数据绑定。
func request(_ count: Int) -> Observable<[CacheModel]> {
CacheAPI.cache(count).request()
.mapHandyJSON(HandyDataModel<[CacheModel]>.self)
.compactMap { $0.data }
.observe(on: MainScheduler.instance)
.catchAndReturn([])
}
此模块基于 HandyJSON
包进行网络数据解析。
- 大致分为以下3个部分
- HandyDataModel:网络外数据模型。
- HandyJSONError:解析错误相关。
- RxHandyJSON:HandyJSON数据解析,目前提供两种解析方案。
- 方案1:将
HandyDataModel
模型合并以解析数据。 - 方案2:根据
keyPath
解析指定键的数据,前提是json数据源必须为字典形式。
- 方案1:将
🎷 网络部分的使用示例
func request(_ count: Int) -> Driver<[CacheModel]> {
CacheAPI.cache(count).request()
.asObservable()
.mapHandyJSON(HandyDataModel<[CacheModel]>.self)
.compactMap { $0.data }
.observe(on: MainScheduler.instance)
.delay(.seconds(1), scheduler: MainScheduler.instance)
.asDriver(onErrorJustReturn: [])
}
此模块用于数据序列化和反序列化,替代HandyJSON。
🎷 网络部分的使用示例
func request(_ count: Int) -> Observable<[CodableModel]> {
CodableAPI.cache(count)
.request(callbackQueue: DispatchQueue(label: "request.codable"))
.deserialized(ApiResponse<[CodableModel]>.self, mapping: CodableModel.self)
.compactMap({ $0.data })
.observe(on: MainScheduler.instance)
.catchAndReturn([])
}
CocoaPods是一个依赖管理器。有关用法和安装说明,请访问他们的网站。要使用CocoaPods进行集成,请在Podfile中指定它
pod 'Booming'
您应明确定义您的最小部署目标,如下所示
platform :ios, '11.0'
如果您想导入缓存插件
pod 'NetworkCachePlugin'
如果您想使用Codable
pod 'HollowCodable'
如果需要响应式网络连接
pod 'RxNetworks/RxSwift'
其他插件和模块请参阅 podspec 文件。
大致过程几乎是这样,Demo也写得非常详细,您可以自己查看。🎷
提示:如果您觉得有用,请给我星标。如果您有任何问题或需求,也可以发表问题。
谢谢。🎇
- 🎷 电子邮件地址: [email protected] 🎷
- 🎸 GitHub地址: yangKJ 🎸
在GitHub上买我一杯咖啡或支持我。

支付宝或微信。谢谢。
Booming可在MIT许可下获得。有关更多信息,请参阅LICENSE文件。