moya rxswift的简单实用

导入三方

pod 'Moya/RxSwift', '~> 11.0'
pod 'SwiftyJSON', '~> 4.0' 

配置文件

import UIKit
import Moya
import SwiftyJSON
import RxSwift

//请求分类
public enum netTool {
    
    case zen
    case userProfile(String)

}
// MARK: - get请求 https://api.github.com/zen  https://api.github.com/users/ashfurrow
////请求的配置
extension netTool: Moya.TargetType {
   //服务器的地址
    public var baseURL: URL {
        return URL(string: "https://api.github.com")!
    }
   
    var parameterEncoding: ParameterEncoding {
        return JSONEncoding.default
    }
    //请求的路径
    public var path: String {
        switch self {
        case .zen:
            return "/zen"
        case .userProfile(let name):
            return "/users/\(name)"
        }
    }
    //请求的方法
    public var method: Moya.Method {
        return .get
    }
    //这个是做单元测试的数据,不用管
    public var sampleData: Data {
        return "Test data".data(using: .utf8)!
    }
    //请求的任务时间
    public var task: Moya.Task {
        switch self {
        default:
            return .requestPlain
        }
    }
    //请求头配置
    public var headers: [String : String]? {
        return nil
    }
}

 简单的使用,建议导入三方的json解析器,完成解析

 private let dispose = DisposeBag()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        let provider = MoyaProvider<netTool>()
        provider.rx.request(.userProfile("ashfurrow")).subscribe{
            (event) -> Void in
            print("*************\(event)")
            switch event {
            case .success(let response):
                print("?????")
                do {
                                    let info = try response.mapJSON()//返回的数据解析成 JSON
                                    print(info)
                                } catch {
                                   
                                }
                break
            default:
                 break
            }
        }.disposed(by: dispose)
 }

 

上一篇:Android:文件读写报错FileNotFoundException: /storage/emulated/0/imooc.txt: open failed: ENOENT


下一篇:Linux struct itimerval使用方法