Solicitud de red Swift Moya+RxSwift

Solicitudes de red elegantes en Swift

github oficial

// 1.定一个enum
enum MyService {
    xxxx
    case showUser(id: Int)
    xxx
}

// 2.扩展这个enum,符合 TargetType
extension MyService: TargetType {
    var baseURL: URL { return URL(string: "https://api.myservice.com")! }
    var path: String {
        switch self {
        case .showUser(let id), .updateUser(let id, _, _):
            return "/users/\(id)"
        }
    }
    var method: Moya.Method {
        switch self {
        case .zen, .showUser, .showAccounts:
            return .get
        case .createUser, .updateUser:
            return .post
        }
    }
    var task: Task {
        switch self {
        case .zen, .showUser, .showAccounts: // Send no parameters            return .requestPlaincase let .updateUser(_, firstName, lastName):  // Always sends parameters in URL, regardless of which HTTP method is used            return .requestParameters(parameters: ["first_name": firstName, "last_name": lastName], encoding: URLEncoding.queryString)
            return .requestPlain
        }
    }
    var headers: [String: String]? {
        return ["Content-type": "application/json"]
    }
 }
 
 // 3.用起来
 let provider = MoyaProvider<MyService>()
 provider.request(.createUser(firstName: "James", lastName: "Potter")) { result in
 // do something with the result (read on for more details)
 }
// rxSwift 用法
provider.rx.request(.zen).subscribe { event in
    switch event {
    case .success(let response):
        // do something with the data
    case .error(let error):
        // handle the error
    }
}

Paquete simple de Moya + RxSwift - Se busca programador

Moya/RxSwift.md en maestro · Moya/Moya · GitHub

Supongo que te gusta

Origin blog.csdn.net/linzhiji/article/details/128166280
Recomendado
Clasificación