美文网首页函数响应式编程
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介绍(六)——网络请求

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