Zen, 零成本网络
Zen 是一款简单的同时功能强大的 iOS 网络库。它利用 Alamofire 和 Swift 的强大特性,使构建网络层更加直观和高效。
要求
- Xcode 11.3+
- Swift 5.1+
- iOS 13+
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖关系管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 在 Xcode 项目中集成 Zen,请在您的 Podfile
中指定它
pod 'Zen', '~> 0.1.7'
Carthage
Carthage 是一种去中心化的依赖管理器,可以构建您的依赖项并提供二进制框架。要使用 Carthage 在您的 Xcode 项目中集成 Zen,请在您的 Cartfile
中指定它。
github "KarimEbrahemAbdelaziz/Zen" ~> 0.1.7
SPM
Swift Package Manager 是一种自动化 Swift 代码分发的工具,并集成到 swift
编译器中。它尚处于早期开发阶段,但 Zen 支持在支持的平台上使用它。
一旦您设置了您的 Swift 包,将 Zen 添加为依赖项就像将其添加到您的 Package.swift
中的 dependencies
值一样简单。
dependencies: [
.package(url: "https://github.com/KarimEbrahemAbdelaziz/Zen.git", .upToNextMajor(from: "0.1.7"))
]
使用方法
创建您的模型(必须符合 Codable)
struct Todo: Codable {
var userId: Int
var id: Int
var title: String
var completed: Bool
}
🔥
创建您的 API 客户端import Zen
class APIClient {
@ZenRequest<Todo>("https://jsonplaceholder.typicode.com/todos/")
static var fetchTodo: Service<Todo>
}
🤓
使用它Zen GET 请求
try? APIClient.$fetchTodo
// Specifiy HTTPMethod for The Request
.set(method: .get)
// Specifiy Custom PATH for The Request
.set(path: "1")
// Build the Request
.build()
APIClient.fetchTodo { result in
switch result {
case .success(let todo):
print(todo.title)
case .failure(let error):
print(error)
}
}
Zen GET 请求(查询参数)
try? APIClient.$fetchUsers
// Specifiy HTTPMethod for The Request
.set(method: .get)
// Specifiy Query Parameters for The Request
.set(parameters: .url([
"delay": "3"
]))
// Build the Request
.build()
APIClient.fetchUsers { result in
switch result {
case .success(let users):
print(users.data.count)
case .failure(let error):
print(error)
}
}
Zen POST 请求
try? APIClient.$createUser
// Specifiy HTTPMethod for The Request
.set(method: .post)
// Specifiy Body Parameters for The Request
.set(parameters: .body([
"name": "Karim Ebrahem",
"job": "iOS Software Engineer"
]))
// Build the Request
.build()
APIClient.createUser { result in
switch result {
case .success(let user):
print(user.name)
case .failure(let error):
print(error)
}
}
待办事项
- 支持所有 HTTP 方法请求。
- 支持请求体参数。
- 支持查询参数。
- 支持响应头。
- 支持拦截器。
作者
Karim Ebrahem,[email protected] 您可以在 Twitter 上找到我 @k_ebrahem_。
许可证
Zen 适用于 MIT 许可证。请参阅 LICENSE
文件以获取更多信息。
在必要时,Zen 将会更新,并在发现问题后立即修复以保持其最新状态。
享受!