您的位置:首页 > 理论基础 > 计算机网络

Swift网络封装库Moya中文手册之RxSwift

2016-06-29 14:45 316 查看

RxSwift

Maya提供了一个可选的
MoyaProvider
子类 -
RxMoyaProvider
。在网络请求完成时,我们不再使用
request()
函数的回调闭包,而是使用
Observable


RxMoyaProvider
可以像
MoyaProvider
一样创建和使用:

let provider = RxMoyaProvider<GitHub>()

然后,你就可以干很多事情:

provider.request(.Zen).subscribe { (event) -> Void in
switch event {
case .Next(let response):
// do something with the data
case .Error(let error):
// handle the error
default:
break
}
}

对于
RxMoyaProvider
,在请求被订阅前,不会发起网络请求。如果网络请求完成之前,订阅的信号被销毁了,请求将被取消。

如果请求正常完成,将会发生两件事:

observable 发送一个
Moya.Response
类型的值 。

observable 结束.

如果请求发生了错误(通常是NSURLSession错误),错误码是网络请求失败的status code,如果有的话,和response data,如果也有的话。

Moya.Response
类型包含一个
statusCode
,一些
data
,和一个可以为空的
NSURLResponse
。不管你习惯
subscribeNext
还是
map
,都可以使用这些数据。

更棒的是,Moya提供了一些
Observable
的扩展,让你更简单的处理
MoyaResponses


filterStatusCodes()
提供了一系列status code。如果返回的status code不在其中,将生成一个error。

filterStatusCode()
用于查找特殊的status cod,如果没有找到,将生成error。

filterSuccessfulStatusCodes()
筛选200系列的status codes。

filterSuccessfulStatusAndRedirectCodes()
筛选200-300系列的status codes。

mapImage()
尝试将返回数据转换成
UIImage
,失败的话将生成error。

mapJSON()
尝试将返回数据转换成 JSON对象,失败的话将生成error。

mapString()
尝试将返回数据转换成字符串,失败的话将生成error。

在网络请求错误的情况下,error的
domain
MoyaErrorDomain
。 通常code是
MoyaErrorCode
rawValue
。底层的errors提供了原始的返回数据,在
NSError
userInfo
中,关键字为"data"。

转载请注明出处http://www.cnblogs.com/liuliuliu/p/5626788.html,并注明转载。

原文链接

翻译: bibibi_liuliu

联系方式: 395985239@qq.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: