一个用于 JSON API 的快速 请求 & 响应 框架。
此软件包旨在通过利用条件检查在多种 Swift 环境中工作。它已在 Apple 平台(macOS、iOS、tvOS、watchOS)以及 Linux (Ubuntu) 上进行过测试。
SessionPlus 提供了一个默认实现 (URLSessionClient
),允许从 JSON API 请求数据。 例如
let url = URL(string: "https://api.agify.io")!
let client = BaseURLSessionClient(baseURL: url)
let request = Get(queryItems: [URLQueryItem(name: "name", value: "bob")])
let response = try await client.request(request)
Client
协议还提供了扩展,用于自动将响应解码为任何 Decodable
类型。
struct ApiResult: Decodable {
let name: String
let age: Int
let count: Int
}
let response = try await client.request(request) as ApiResult
...
let response: ApiResult = try await client.request(request)
Client
协议根据平台能力声明了最多三种形式的请求
// async/await for swift 5.5+
func performRequest(_ request: Request) async throws -> Response
// completion handler for backwards compatibility
func performRequest(_ request: Request, completion: @escaping (Result<Response, Error>) -> Void)
// Combine publisher that emits with a response
func performRequest(_ request: Request) -> AnyPublisher<Response, Error>
SessionPlus 使用 Swift Package Manager 分发。您可以使用 Xcode 添加它,或者将其作为依赖项列在您的 Package.swift
清单文件中
let package = Package(
...
dependencies: [
.package(url: "https://github.com/richardpiazza/SessionPlus.git", .upToNextMajor(from: "2.0.0")
],
...
targets: [
.target(
name: "MyPackage",
dependnecies: [
"SessionPlus"
]
)
]
)
欢迎并鼓励为 SessionPlus 做出贡献! 请参阅 贡献指南 以获取更多信息。