NetworkHudsPlugin 1.0.9

NetworkHudsPlugin 1.0.9

77 维护。



 
依赖项目
Booming/Core>= 0
MBProgressHUD>= 0
 

Booming

Carthage compatible CocoaPods Compatible CocoaPods Compatible CocoaPods Compatible Platform

Booming 是一个 Swift 的基础网络库。针对 Swift 5 设计,旨在利用最新的语言特性。该框架的终极目标是实现易于使用的网络配置,以便编写易于维护的代码。

HollowCodable 是一个用于 Swift 的可编码属性包装器库。

RxNetworks 是一个 Swift 的声明式和响应式网络库。

🧚. RxSwift + Moya + HandyJSON/Codable + 插件。👒👒👒


英文 | 简体中文

这是基于 Moya 的一种基础网络 API 套件,也支持响应式网络和 RxSwift。

特性

到目前为止,Booming 最重要的特性可以总结如下:

  • 支持与 RxSwift 的结合使用的响应式网络请求。
  • 支持面向对象,同时也支持 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 个插件供使用。
    • Header: 网络HTTP头插件。
    • Debugging: 网络打印,内置插件。
    • GZip: 网络数据解压缩插件。
    • Shared: 网络共享插件。
    • Files: 网络下载文件和上传资源插件。
    • Token: 令牌验证插件。
    • Ignore: 忽略插件,目的是在此网络请求中忽略该插件。
    • Authentication: 拦截插件。
    • 缓存:网络数据缓存插件。
    • 自定义缓存:自定义网络数据缓存插件。
    • Lottie:基于lottie的动画加载插件。

适用于iOS平台

如果您想使用token插件和认证插件,可以参考项目用例。

🎷 简单易用,在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: [])
}

HollowCodable

此模块用于数据的序列化和反序列化,替代了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是一个依赖管理器。有关使用和安装说明,请访问他们的网站。要使用CocoaPods进行集成,请在Podfile中指定它

pod 'Booming'

您应该明确定义您的最低部署目标,例如

platform :ios, '11.0'

如果您想导入缓存插件

pod 'NetworkCachePlugin'

如果您想使用Codable

pod 'HollowCodable'

如果需要响应式网络

pod 'RxNetworks/RxSwift'

对于除外的其他插件和模块,请阅读podspec文件。

备注

总体过程几乎是这样的,Demo也写得非常详细,您可以自己检查。

BoomingDemo

技巧:如果您觉得它有用,请帮我点亮一个星。如果您有任何问题或需求,也可以发起。

谢谢。🎇

关于作者

买我一杯咖啡或在GitHub上支持我GitHub

yellow-button

支付宝或微信。谢谢。


许可协议

Booming可在<码>MIT协议下使用。有关更多信息,请参阅LICENSE文件。