RxSwift介紹(六)——網(wǎng)絡(luò)請求

RxSwift框架對網(wǎng)絡(luò)請求也是幫我們進(jìn)行了封裝,方便我們在實際應(yīng)用中快速使用,這次主要介紹下相關(guān)網(wǎng)絡(luò)請求方法使用

在 swift 環(huán)境下開發(fā),網(wǎng)絡(luò)請求框架最知名就是 Alamofire ,AFN網(wǎng)絡(luò)請求框架 swift 版本。其強(qiáng)大的功能和多種自定義網(wǎng)絡(luò)請求,方便性不言而喻。首先來看下在 RxSwift 框架中,其本身也給我們進(jìn)行的網(wǎng)絡(luò)請求的封裝。如果是在簡單的網(wǎng)絡(luò)請求環(huán)境下,可以利用 RxSwift 框架提供的方法來快速實現(xiàn)網(wǎng)絡(luò)請求響應(yīng)。
RxSwift框架中,將 URLSession 進(jìn)行了封裝,在 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)
    }

關(guān)于 response 方法,測試打印后,發(fā)現(xiàn)其返回給我們的是,關(guān)于請求的頭部信息以及 data 大小,并沒有我們想要拿到的返回數(shù)據(jù)

response方法返回結(jié)果

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)
    }

打印結(jié)果也僅僅是返回了數(shù)據(jù)的大小,也沒有我們想要的數(shù)據(jù)

data方法返回結(jié)果

最后來看下 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)
    }

打印測試結(jié)果


json方法返回結(jié)果

從 json 方法中終于拿到了我們想要的 json 數(shù)據(jù)串

接下來,就是需要我們將 json 轉(zhuǎn)換成模型,最常用的第三方框架就是 ObjectMapper GitHub鏈接

除了 RxSwift 框架自帶的網(wǎng)絡(luò)請求方法之外,通常在項目中大部分是使用 Alamofire 請求框架封裝后專門用于提供給 RxSwift 框架的 Moya 。
基于 RxSwift + Moya + ObjectMapper 的綜合使用,搭建 MVVM框架,推薦看下LiuXunFeng 博客的 RxSwift 項目實戰(zhàn),里面有許多值得學(xué)習(xí)的技巧


該文章首次發(fā)表在 簡書:我只不過是出來寫寫代碼 博客,并自動同步至 騰訊云:我只不過是出來寫寫iOS 博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容