RequestKits 1.0.0

RequestKits 1.0.0

Nghia Nguyen 维护。



 
依赖关系
RxSwift>= 5.1.1
Alamofire>= 5.1.0
 

  • 作者
  • Nghia Nguyen

Build Status Cocoapods platforms Cocoapods SPM compatible Swift Xcode MIT

RequestKits 是一个用于网络请求(API 请求,上传/下载任务)的框架

要求

  • iOS 11.0+
  • Swift 5.0+

依赖项

  • RxSwift
  • Alamofire

安装

CocoaPods

要使用 CocoaPods 在 Xcode 项目中集成 RequestKits,请在您的 Podfile 中指定它

pod 'RequestKits'

Swift 包管理器

您可以通过在 Package.swift 中添加适当的描述来使用 Swift 包管理器安装 RequestKits

import PackageDescription

let package = Package(
    name: "YOUR_PROJECT_NAME",
    targets: [],
    dependencies: [
        .package(url: "https://github.com/nghiadev95/RequestKits.git", from: "1.0.0")
    ]
)

用法

定义您的网络实例

private let network = Network(config: NetworkConfig())

通过以下方式发起请求

  • 纯净型
var request = URLRequest(url: URL(string: "https://httpbin.org/get")!)
request.method = .get
network.request(request, validationType: .successCodes) { data, error in
    print(data as Any)
    print(error as Any)
}
  • 可请求型
struct GetAllPostsRequest: Requestable {
    var baseURL: URL {
        return URL(string: "https://httpbin.org/")!
    }

    var path: String {
        return "get"
    }

    var method: HTTPMethod {
        return .get
    }

    var task: Task {
        .requestPlain
    }
}

network.request(requestable: GetAllPostsRequest()) { data, error in
    print(data as Any)
    print(error as Any)
}
  • RxSwift与可请求型
let request: Observable<EmptyEntity> = network.rxRequest(requestable: GetAllPostsRequest())
request.subscribe(onNext: { response in
    print(response)
}).disposed(by: disposeBag)

操作队列

  • 请求队列管理器
RequestManager.instance.updateMaxConcurrentOperationCount(2)
RequestManager.instance.updateQualityOfService(.background)

DownloadManager.instance.updateMaxConcurrentOperationCount(2)
DownloadManager.instance.updateQualityOfService(.background)

UploadManager.instance.updateMaxConcurrentOperationCount(2)
UploadManager.instance.updateQualityOfService(.background)

插件

  • 请求适配器

— 身份验证

public enum Authentication {
    case bearer(token: String)
    case basic(token: String)
    case credential(username: String, password: String)
    case custom(name: String, token: String)
}
  • 事件监视器

— 网络日志记录器

public struct NetworkLogger: EventMonitor {
    public enum Level: String {
        case verbose
        case debug
        case info
    }
}

许可协议

  • RequestKits 使用 Alamofire. 有关更多信息,请参阅 LICENSE.
  • RequestKits 使用 RxSwift. 有关更多信息,请参阅 LICENSE.
  • RequestKits 在 MIT 许可下发布。有关更多信息,请参阅 LICENSE.