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