Swift Package Index 列表 • 文档 • 兼容性
Superhighway 是一个网络库,深受 tiny-networking 的启发。它定义了一个 Endpoint
类型,该类型封装了 URLRequest
和它所代表的 Decodable
实体之间的关系。
struct Repository: Decodable {
let id: Int64
let name: String
}
func getRepository(author: String, name: String) -> Endpoint<Repository> {
return Endpoint(
decoding: Repository.self,
method: .get,
url: URL(string: "https://api.github.com/repos/\(author)/\(name)")!
)
}
let endpoint = getRepository(author: "rhysforyou", name: "Superhighway")
这仅仅提供了 endpoint 的描述,要实际加载它,我们可以将其传递给 URLSession
do {
let (repository, _) = try await URLSession.default.response(for: endpoint)
print("Repository: \(repository)")
} catch {
print("Error: \(error)")
}
如果任务在完成之前被取消,任何网络操作都将被停止。
推荐使用 Swift Package Manager 来使用 Superhighway。对于 Xcode 项目,只需将此仓库添加到项目的 Swift 包列表中。对于使用 Package.swift
文件的项目,请添加以下内容
// swift-tools-version:5.5
import PackageDescription
let package = Package(
// ...
dependencies: [
.package(url: "https://github.com/rhysforyou/Superhighway.git", "0.5.0"..<"0.6.0")
],
targets: [
.target(
name: "MyTarget",
dependencies: ["Superhighway"])
]
)
其他包管理器,如 CocoaPods 和 Carthage,官方不支持,但是整个库被封装在一个单独的 Endpoint.swift
文件中,该文件可以复制到现有项目中并直接使用。