RxSwift介紹(六)——網絡請求

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 博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容