Zen 0.1.7

Zen 0.1.7

Karim Ebrahem 维护。



Zen 0.1.7

Zen, 零成本网络

MIT License

Cocoapod Carthage Swift Package Manager Version
Facebook: @KarimEbrahemAbdelaziz Twitter: @k_ebrahem_

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 将会更新,并在发现问题后立即修复以保持其最新状态。

享受!