Swift网络封装库Moya中文手册之RxSwift
2024-09-26 22:11:52
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
最新文章
- java常用英文解释
- 如何让UIView中的Button点击之后跳转到另一个ViewController上去,ViewController上也有一个按钮 可以返回
- logstash使用操作部分
- 【原创】Js:日期处理(日期格式必须【yyyy-mm-dd】才能转成long的毫秒!其他的不是【年-月-日】的格式,结果会是【NaN】)
- Helpers\RainCaptcha
- freemarker的使用心得
- Windows下更改MySQL数据库的存储位置
- android 报错之noclassdeffounderror
- SpringCloud学习笔记(7)——Sleuth
- CXF 开发 REST 服务
- flask(二)之Jinja2模板与Flask-WTF
- Hbase CMS GC 调优。
- Elasticsearch学习系列之term和match查询
- [rrdtool]监控和自己主动绘图,简单的监控.md
- Highcharts 多个Y轴动态刷新数据
- Linux 常用的压缩命令有 gzip 和 zip
- python+scrapy 爬取西刺代理ip(一)
- Spring Boot中使用Redis小结
- web development blog(转)
- k8s PersistentVolume hostpath 简单使用
热门文章
- 【第五章】 springboot + mybatis
- 3、CommonChunkPlugin提取公共js-以提取一个jquery为例
- java 类构造器中加入有参构造器及调用顺序【思路】
- 【异常记录(九)】 System.Threading.ThreadAbortException: 正在中止线程
- 05_Kafka Python_Consumer模拟
- c assert 用法
- python sort、sorted
- gulp4小demo
- chrome的url列表里面也找不到chrome://plugins的原因
- 字符集(编码)转换_Windows