Booming
Booming 是一个Swift的基础网络库。为Swift 5开发,旨在利用最新的语言特性。该框架的最终目标是实现易于使用的网络,使其便于编写易于维护的代码。
RxNetworks 是一个针对Swift的声明式和响应式网络库。
🧚. RxSwift + Moya + HandyJSON + 插件。👒👒👒
英文 | 简体中文
这是一个基于Moya的基础设施网络API集,同时也支持使用RxSwift进行响应式网络。
特性
目前,Booming最重要的特性可以总结如下:
- 支持结合 RxSwift 的响应式网络请求。
- 支持面向对象网络请求,也支持POP网络请求。
- 支持使用 HandyJSON 进行数据解析。
- 支持通用请求和路径、通用参数等的配置。
- 支持对 Moya 的各种网络插件进行简单定制。
- 支持上传和下载文件/资源等。
- 支持使用
NetworkConfig.basePlugins
注入默认插件。 - 支持10个为您预包装的插件。
用法
如何使用 行为准则。
SharedAPI.userInfo(name: "yangKJ").HTTPRequest(success: { json in
// do somthing..
let model = Deserialized<Model>.toModel(with: json)
}, failure: { error in
print(error.localizedDescription)
})
插件
本模块主要基于 moya 包的网络相关插件。
- 目前为您封装了 10 个插件供使用
针对 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]
}
RxSwift
本模块主要支持数据绑定。
func request(_ count: Int) -> Observable<[CacheModel]> {
CacheAPI.cache(count).request()
.mapHandyJSON(HandyDataModel<[CacheModel]>.self)
.compactMap { $0.data }
.observe(on: MainScheduler.instance)
.catchAndReturn([])
}
HandyJSON
此模块基于 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: [])
}
CocoaPods
CocoaPods 是一个依赖管理工具。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 集成,请在 Podfile 中指定它
pod 'Booming'
您应明确定义您的最低部署目标,例如
platform :ios, '11.0'
如果您想导入缓存插件
pod 'Booming'
pod 'Booming/Cache'
如果需要响应式网络
pod 'RxNetworks/RxSwift'
有关其他未包含的插件和模块,请阅读podspec 文件。
备注
一般过程几乎是这样的,示例也写得非常详细,您可以自己查看。🎷
提示:如果您觉得有帮助,请帮忙点赞。如果您有任何问题或需求,也可以发起。
谢谢。🎇
关于作者
- 🎷 电子邮箱地址: [email protected] 🎷
- 🎸 GitHub地址: yangKJ 🎸
在GitHub上为我买杯咖啡或支持我:GitHub。

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