C0T0 0.2.2

C0T0 0.2.2

Karol Wieczorek 维护。



C0T0 0.2.2

  • TPLX iOS 团队

Build Status

C0T0 - 基于 NSURLSession 的简单 iOS 网络 library

安装

CocoaPods

要通过 CocoaPods 将 C0T0 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<target name>' do
  pod 'C0T0', '~> 0.2.0'
end

然后,运行以下命令

$ pod install

使用

执行一个简单的 GET 请求

创建一个指定主机名的 SessionConfiguration 对象。

如果您对请求、响应和错误日志感兴趣,只需在 SessionConfiguration init 方法中启用日志记录。默认情况下日志记录是禁用的(默认值也是设置为在 init 方法中可以跳过)。

    private let sessionConfiguration = SessionConfiguration(
                                           host: "https://api.github.com",
                                           loggingEnabled: true
                                       )

接下来创建 ApiService 的实例

    private lazy var apiService = ApiService(configuration: sessionConfiguration)

请记住保留 apiService 对象,而不是在函数的作用域内创建局部变量,否则您的对象可能在收到响应之前被释放。

这里是一个设置 repositories 数组的示例,或者在失败时显示错误提示框的 requestRepositories(for:) 函数。对于解析结果,我们使用 Codable 模型。因此,对于 Result,您必须提供符合 Codable 协议的泛型类型。

private func requestRepositories(for organization: String) {
        let apiRequest = ApiRequest(endpoint: "/orgs/\(organization)/repos", method: .GET)
        
        apiService.send(request: apiRequest) { [weak self] (result: Result<[Repository], ApiError>) in
            result.ifSuccess { repositories in
                self?.repositories = repositories
            }.else(closure: { error in
                DispatchQueue.main.async {
                    self?.showAlertWith(error)
                }
            })
        }
    }

URL 编码参数

如果您请求需要 URL 编码参数,请创建如下请求

        let apiRequest = ApiRequest(
                             endpoint: "/endpoint",
                             method: .GET, 
                             urlParameters: ["sampleKey": "sampleValue"]
                         )

带有头的 POST 请求

如果您请求需要 JSON 编码参数,可以实现如下方法

        let postJSON = """
                        {
                            "name": "ToopLoox team member"
                            "job" : "iOS Developer"
                        }
                        """
        let postJSONData = postJSON.data(using: .utf8)
        let apiRequest = ApiRequest(
                             endpoint: "/users",
                             method: .POST,
                             httpBody: postJSONData,
                             headers: ["Content-Type": "application/json"]
                         )
       

下载内容

ApiService 同样支持下载。

        apiService.download(from: url) { (result: Result<Data, ApiError>) in
            result.ifSuccess(closure: { data in
                // Your's code goes here
            })
        }

示例项目

示例项目包含在这个仓库中,只需输入 pod install 即可运行。

测试

Example Project 包含针对代码的测试

许可证

C0T0 使用 MIT 许可证发布。详情请见 LICENSE