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 项目实战,里面有许多值得学习的技巧
该文章首次发表在 简书:我只不过是出来写写代码 博客,并自动同步至 腾讯云:我只不过是出来写写iOS 博客