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
}
}