高速公路

Build & Test Swift Package Swift Package Manager Recommended Supports macOS, iOS, tvOS, watchOS, and Linux Licensed under the Unlicense

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 文件中,该文件可以复制到现有项目中并直接使用。