Get

Platform

一个精简的 Swift Web API 客户端,使用 async/await 构建。

Get 提供了一个清晰便捷的 API,用于使用 Request<Response> 类型对网络请求进行建模。它的 APIClient 使得执行这些请求和解码响应变得容易。

// Create a client
let client = APIClient(baseURL: URL(string: "https://api.github.com"))

// Start sending requests
let user: User = try await client.send(Request(path: "/user")).value

var request = Request(path: "/user/emails", method: .post, body: ["alex@me.com"])
try await client.send(request)

该客户端使用 URLSession 进行网络连接,并提供对所有 API 的完全访问权限。它的设计理念是“少即是多”,并且没有在原生 API 之上引入任何不必要的抽象。

// In addition to `APIClientDelegate`, you can also override any methods
// from `URLSessionDelegate` family of APIs.
let client = APIClient(baseURL: URL(string: "https://api.github.com")) {
    $0.sessionDelegate = ...
}

// You can also provide task-specific delegates and easily change any of
// the `URLRequest` properties before the request is sent.
let delegate: URLSessionDataDelegate = ...
let response = try await client.send(Paths.user.get, delegate: delegate) {
    $0.cachePolicy = .reloadIgnoringLocalCacheData
}

除了发送快速请求之外,它还支持将数据下载到文件、从文件上传、身份验证、自动重试、日志记录等。这是一种如果您直接使用 URLSession 时通常会编写的代码。

赞助 💖

支持 Get 在 GitHub Sponsors 上。

文档

通过浏览使用 DocC 创建的文档,了解如何使用 Get。

要了解更多关于 URLSession 的信息,请参阅URL Loading System

集成

Pulse

您可以使用 Pulse 轻松地将日志记录添加到您的 API 客户端。它只需要一行代码即可设置。

let client = APIClient(baseURL: URL(string: "https://api.github.com")) {
    $0.sessionDelegate = PulseCore.URLSessionProxyDelegate()
}

使用 Pulse,您可以直接在您的设备上检查日志 – 并且它支持所有 Apple 平台。您可以随时共享日志,并使用 Pulse Pro 在大屏幕上查看它们。

pulse-preview

CreateAPI

使用 CreateAPI,您可以采用您的后端 OpenAPI 规范,并为 Get APIClient 生成所有响应实体甚至请求。

generate api.github.yaml --output ./OctoKit --module "OctoKit"

查看 App Store Connect Swift SDK,它使用 CreateAPI 进行代码生成。

其他扩展

Get 是一个精简的框架,具有很大的灵活性和自定义点。它非常容易学习和使用,但您需要安装额外的模块才能使用某些功能。

最低要求

Get 日期 Swift Xcode 平台
2.2 2024 年 4 月 13 日 5.8 14.3 iOS 13.0, watchOS 6.0, macOS 10.15, tvOS 13.0, Linux
2.0 2022 年 7 月 26 日 5.5 13.3 iOS 13.0, watchOS 6.0, macOS 10.15, tvOS 13.0, Linux

许可协议

Get 在 MIT 许可下可用。 有关更多信息,请参见 LICENSE 文件。