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)
}
浙公网安备 33010602011771号