一个精简的 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 轻松地将日志记录添加到您的 API 客户端。它只需要一行代码即可设置。
let client = APIClient(baseURL: URL(string: "https://api.github.com")) {
$0.sessionDelegate = PulseCore.URLSessionProxyDelegate()
}
使用 Pulse,您可以直接在您的设备上检查日志 – 并且它支持所有 Apple 平台。您可以随时共享日志,并使用 Pulse Pro 在大屏幕上查看它们。
使用 CreateAPI,您可以采用您的后端 OpenAPI 规范,并为 Get APIClient
生成所有响应实体甚至请求。
generate api.github.yaml --output ./OctoKit --module "OctoKit"
查看 App Store Connect Swift SDK,它使用 CreateAPI 进行代码生成。
Get 是一个精简的框架,具有很大的灵活性和自定义点。它非常容易学习和使用,但您需要安装额外的模块才能使用某些功能。
Codable
支持的 URL 查询编码器multipart/form-data
的支持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 文件。