Swift 网络库(封装 NSURLSession)。
iOS >= 8.0, Swift
将 HydrogenKit 添加到你的 Podfile。
pod "HydrogenKit", "~> 2.0"
运行 pod install
。
let hydrogen = Hydrogen()
let resource = Resource(
path: "get",
method: Method.GET,
parse: { data in
// perform standard JSON decoding using NSJSONSerialization here
return "Hello World"
}
)
let task = hydrogen.request(
NSURL(string: "http://httpbin.org")!,
resource: resource,
completion: { result in
switch result {
case let .Success(value, request, statusCode):
print(value, request, statusCode)
case let .Error(error, request):
print(error, request)
}
}
)
task.resume()
上面的代码片段使用以下四个主要步骤来执行网络调用
NSData
实例并返回解析结果的闭包。(对于响应 JSON 的 REST 端点,这里的 NSData
可以转换为 JSON。).Success
要么是 .Error
。在成功的情况下,第一个关联值包含来自资源 parse
函数的结果(即,“Hello World”)。注意:如果你想更新 UI,这里需要调度到主队列。Hydrogen 可以通过初始化器中的三个(可选)参数来配置
config
:一个 NSURLSessionConfiguration
对象。默认是 NSURLSessionConfiguration.defaultSessionConfiguration()
。urlRequestBuilder
:一个返回配置的 NSURLRequest
对象的 URLRequestBuilder
对象。默认是一个 Hydrogen 的 URLRequestBuilder
类的实例。(待办:URLRequestBuilder 应该是一个协议。)acceptableStatusCodes
:一个 Swift 范围,指定了被考虑为成功的 HTTP 状态码。默认是 200..<300
。该请求方法有三个不同的签名
baseURL: NSURL, resource: Resource<A>, completion: Result<A> -> Void
:用于上面的示例。baseURL: NSURL, resource: Resource<A>, modifyRequest: (NSMutableURLRequest -> Void)?, completion: Result<A> -> Void
:接受一个额外的闭包,该闭包可能修改在开始请求之前的 NSMutableURLRequest
对象。(此闭包在后台队列上运行。)baseURL: NSURL, request: Request<A>
:可以在完成闭包中用于重试失败的请求。您可以通过调用请求方法返回的Task
对象上的cancel
方法,或者调用cancelAll
来停止Hydrogen实例的所有调用。