美文网首页函数响应式编程
RxSwift介绍(六)——网络请求

RxSwift介绍(六)——网络请求

作者: 我只不过是出来写写代码 | 来源:发表于2018-08-15 09:30 被阅读36次

RxSwift框架对网络请求也是帮我们进行了封装,方便我们在实际应用中快速使用,这次主要介绍下相关网络请求方法使用

在 swift 环境下开发,网络请求框架最知名就是 Alamofire ,AFN网络请求框架 swift 版本。其强大的功能和多种自定义网络请求,方便性不言而喻。首先来看下在 RxSwift 框架中,其本身也给我们进行的网络请求的封装。如果是在简单的网络请求环境下,可以利用 RxSwift 框架提供的方法来快速实现网络请求响应。
RxSwift框架中,将 URLSession 进行了封装,在 URLSession+Rx.swift文件下,可以找到 RxSwift 为我们提供了四种方法

方法列表截图
从上往下,首先是 response 方法
    func requestResponse() -> Void {
        let url = URL(string: urlString)
        URLSession.shared.rx.response(request: URLRequest(url: url!))
            .subscribe(onNext: { (response, data) in
            print("response ==== \(response)")
            print("data ===== \(data)")
        }, onError: { (error) in
            
        }).disposed(by: disposeBg)
    }

关于 response 方法,测试打印后,发现其返回给我们的是,关于请求的头部信息以及 data 大小,并没有我们想要拿到的返回数据

response方法返回结果

data 方法

    func requestData() -> Void {
        let url = URL(string: urlString)
        URLSession.shared.rx.data(request: URLRequest(url: url!))
            .subscribe(onNext: { (data) in
            print("data ==== \(data)")
        }, onError: { (error) in
            
        }).disposed(by: disposeBg)
    }

打印结果也仅仅是返回了数据的大小,也没有我们想要的数据

data方法返回结果
最后来看下 json 方法
    func requestJson() -> Void {
        let url = URL(string: urlString)
        URLSession.shared.rx.json(url: url!)
            .subscribe(onNext: { (data) in
            print("data === \(data)")
        }, onError: { (error) in
            
        }).disposed(by: disposeBg)
    }

打印测试结果


json方法返回结果

从 json 方法中终于拿到了我们想要的 json 数据串

接下来,就是需要我们将 json 转换成模型,最常用的第三方框架就是 ObjectMapper GitHub链接

除了 RxSwift 框架自带的网络请求方法之外,通常在项目中大部分是使用 Alamofire 请求框架封装后专门用于提供给 RxSwift 框架的 Moya 。
基于 RxSwift + Moya + ObjectMapper 的综合使用,搭建 MVVM框架,推荐看下LiuXunFeng 博客的 RxSwift 项目实战,里面有许多值得学习的技巧

相关文章

  • RxSwift介绍(六)——网络请求

    RxSwift框架对网络请求也是帮我们进行了封装,方便我们在实际应用中快速使用,这次主要介绍下相关网络请求方法使用...

  • 通过 Moya + RxSwift + Argo 完成网络请求

    通过 Moya + RxSwift + Argo 完成网络请求 通过 Moya + RxSwift + Argo ...

  • RxSwift(IV)

    网络请求合并 RxSwift 网络请求封装网络安全请求合并: 打印: 参考资料: 观察序列创建

  • RXSwift

    RxSwift 使用详解系列 - 简书 RxSwift+Moya+ObjectMapper优雅的网络请求 - Co...

  • RxSwift 网络请求

    一、说明 入坑RxSwift 有段时间了,之前在项目中只是小范围的使用RxSwift,为了更好的使用响应式编程,决...

  • Moya+Realm+RxSwift+SwiftyJSON优雅的

    Moya + RxSwift + SwiftyJSON + Realm 封装网络请求 先看一个例子,这段代码是请求...

  • iOS开发常用库

    pod 'Moya' 网络请求的封装 pod 'Moya/RxSwift' http://www.jianshu...

  • Rxswift网络请求使用

    基于rxswift实现响应式编程,使一个复杂的逻辑能在一个地方完成,这样的代码更加地方便阅读更加一目了然。当然它的...

  • RxSwift 深入浅出(七)网络封装

    RxSwift 这个框架看我就够了,这一篇我重点介绍RxSwift对网络层的封装。搞RxSwift,我是认真的 R...

  • RxSwift 深入浅出(八)开发总结

    RxSwift 这个框架看我就够了,这一篇我重点介绍RxSwift在开发中的总结,数据请求,数据格式转换,数据联动...

网友评论

    本文标题:RxSwift介绍(六)——网络请求

    本文链接:https://www.haomeiwen.com/subject/mddmbftx.html