簡體   English   中英

如何在Moya中傳遞URLRequest

[英]How to Pass the URLRequest in Moya

在我的應用程序中,我使用Moya發出Api請求。 在這里,我有URLRequest,但是我不知道如何在MoyaProvider中傳遞它。

Alamofire前:

Alamofire.request(urlRequest)

像Same一樣,我需要使用Moya而不是TargetApi來實現。

Moya正在研究Alamofire並隱藏了它的實現。 因此,沒有理由在您的情況下使用Moya。 如果需要,您可以自行使用Alamofire。

這不是將URLRequest傳遞給Moya正確方法。 唯一的方法是自行下載源代碼並添加所需的功能

看完下面的文章

使用Moya為Swift編寫網絡層

我可以說以下代碼適合您。

import Foundation
import Moya

enum MyServerAPI {
    case cameras
    case settingsFor(cameraId: String)

    // MARK: - User
    case createUser(email: String, password: String)
}

// 2:
extension MyServerAPI: TargetType {

    // 3:
    var baseURL: URL { return URL(string: "https://testing.myserver.com/api/v1")! }

    // 4:
    var path: String {
        switch self {
        case .cameras:
            return "/cameras"
        case .settingsFor(let cameraId):
            return "/cameras/\(cameraId)/settings"
        case .createUser:
            return "/user"
        }
    }

    // 5:
    var method: Moya.Method {
        switch self {
        case .createUsr:
            return .post
        default:
            return .get
        }
    }

    // 6:
    var parameters: [String: Any]? {
        switch self {
        case .createUser(let email, let password):
            var parameters = [String: Any]()
            parameters["email"] = email
            parameters["password"] = password
            return parameters
        default:
            return nil
        }
    }

    // 7:
    var parameterEncoding: ParameterEncoding {
        return JSONEncoding.default
    }

    // 8:
    var sampleData: Data {
        return Data()
    }

    // 9:
    var task: Task {
        return .request
    }
}


let provider = MoyaProvider<MyServerAPI>()
provider.request(.cameras) { (result) in
    switch result {
        case .success(let response):
            // do something with resoinse
        case .failure(let error):
            // show error
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM