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 大小,并没有我们想要拿到的返回数据
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)
}
打印结果也仅仅是返回了数据的大小,也没有我们想要的数据
最后来看下
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 转换成模型,最常用的第三方框架就是 ObjectMapper GitHub链接
除了 RxSwift 框架自带的网络请求方法之外,通常在项目中大部分是使用 Alamofire 请求框架封装后专门用于提供给 RxSwift 框架的 Moya 。
基于 RxSwift + Moya + ObjectMapper 的综合使用,搭建 MVVM框架,推荐看下LiuXunFeng 博客的 RxSwift 项目实战,里面有许多值得学习的技巧
该文章首次发表在 简书:我只不过是出来写写代码 博客,并自动同步至 腾讯云:我只不过是出来写写iOS 博客