Booming 1.1.4

Booming 1.1.4

77 维护。



Booming 1.1.4

Booming

Carthage compatible CocoaPods Compatible CocoaPods Compatible Platform

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 个插件供使用
    • Header:网络 HTTP Header 插件。
    • Cache:网络数据缓存插件。
    • Debugging:网络打印,内置插件。
    • GZip:网络数据解压插件。
    • Shared:网络共享插件。
    • Lottie:基于 lottie 的动画加载插件。
    • Files:网络下载文件和上传资源插件。

针对 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 数据源必须为字典形式。

🎷 下面是与网络部分结合使用的示例

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 文件。

备注

一般过程几乎是这样的,示例也写得非常详细,您可以自己查看。🎷

BoomingDemo

提示:如果您觉得有帮助,请帮忙点赞。如果您有任何问题或需求,也可以发起。

谢谢。🎇

关于作者

在GitHub上为我买杯咖啡或支持我:GitHub

yellow-button

支付宝或微信。谢谢。


许可证

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