NetworkSessionKit 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:
例如。
pod 'NetworkSessionKit', '1.0.0'
- 文件 > Swift 包 > 添加包依赖
- 添加
https://github.com/jadernunes/NetworkSessionKit.git
或者
更新 Package.swift
中的 dependencies
dependencies: [
.package(url: "https://github.com/jadernunes/NetworkSessionKit.git", .upToNextMajor(from: "1.0.0"))
]
基本上,您需要使用 Requestable
协议,就这么简单,但以下是如何更好地利用它的示例
- 创建一个文件以放置此协议的实现。例如:Resource
import NetworkSession
enum ListAnimalsResources {
case loadAll
}
extension ListAnimalsResources: Requestable {
var method: HTTPMethodType {
switch self {
case .loadAll:
return .get
}
}
var parameters: Params? {
switch self {
case let .loadAll:
let params: [String: Any] = [
"blabla": "bla"
]
return params
}
}
var path: String {
switch self {
case .loadAll:
return "/animals"
}
}
}
- 创建一个文件以实现请求。
import Foundation
import NetworkSession
protocol IListAnimalsService {
func loadAll() async throws -> [AnimalDTO]
}
struct ListAnimalsService: IListAnimalsService {
// MARK: - Properties
private let network: INetwork
// MARK: - Life cycle
init(network: INetwork = NetworkInstance) {
self.network = network
}
// MARK: - Methods
func loadAll() async throws -> [AnimalDTO] {
try await network
.makeRequest(requester: ListAnimalsResources.loadAll)
}
}
- 下一步是调用实际请求
protocol IListAnimalsViewModel {
func loadAllAnimals() async
}
struct ListAnimalsViewModel: IListAnimalsViewModel {
// MARK: - Properties
private let service: IListAnimalsService
// MARK: - Life cycle
init(service: IListAnimalsService = ListAnimalsService()) {
self.service = service
}
// MARK: - Methods
@MainActor
func loadAllAnimals() async {
do {
let animals = try await service.loadAll(page: page)
} catch {
// Handle error
}
}
}