ApiKit 是一个 Swift SDK,可以帮助您与任何 REST API 集成。
ApiKit 定义了一个 ApiClient
协议,该协议描述了如何从任何 REST API 请求原始数据和类型化数据。 该协议由 URLSession
实现,因此您无需创建客户端即可使用共享会话。
ApiKit 定义了 ApiEnvironment
和 ApiRoute
协议,使您可以轻松地建模 API 环境和路由,以及一个 ApiRequest
,它可以定义路由和响应类型,以便更易于使用。
ApiKit 可以通过 Swift Package Manager 安装
https://github.com/danielsaidi/ApiKit.git
假设您想要与 Yelp API 集成,该 API 可以返回餐厅、评论等。
您首先需要定义要集成的各种 API 环境。 在这种情况下,我们只与 v3
环境集成,这需要为所有请求提供 API 标头令牌
import ApiKit
enum YelpEnvironment: ApiEnvironment {
case v3(apiToken: String)
var url: String {
switch self {
case .v3: "https://api.yelp.com/v3/"
}
}
var headers: [String: String]? {
switch self {
case .v3(let token): ["Authorization": "Bearer \(token)"]
}
}
}
然后,我们可以定义从 Yelp API 请求的路由。 在这种情况下,我们只获取按 ID 查找的商家
import ApiKit
enum YelpRoute: ApiRoute {
case business(id: String)
var path: String {
switch self {
case .business(let id): "businesses/\(id)"
}
}
var httpMethod: HttpMethod { .get }
var headers: [String: String]? { nil }
var formParams: [String: String]? { nil }
var postData: Data? { nil }
var queryParams: [String: String]? {
switch self {
case .business: nil
}
}
}
有了环境和路由,我们可以使用任何 ApiClient
或 URLSession
获取 YelpBusiness
let client = URLSession.shared
let environment = YelpEnvironment.v3(apiToken: "YOUR_TOKEN")
let route = YelpRoute.business(id: "abc123")
let business: YelpBusiness = try await client.request(route, in: environment)
通用请求函数会自动将原始响应映射到请求的类型,并抛出发生的任何原始错误。 如果您想要获取原始数据或使用自定义错误处理,也有非通用变体。
有关更多信息,请参阅在线入门指南。
在线文档包含更多信息、文章、代码示例等。
Demo
文件夹包含一个应用程序,可让您探索该库并与一些 API 集成。
您可以在 GitHub Sponsors 上赞助我,或者联系我以获得付费支持,以帮助支持我的开源项目。
您的支持使我能够投入更多精力到这些项目中,并使它们达到最佳状态。
如果您有任何疑问或想以任何方式做出贡献,请随时与我联系
ApiKit 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。