在我的应用程序中,我使用Moya来发出 Api 请求。在这里,我有 URLRequest,但我不知道如何在 MoyaProvider 中传递它。
阿拉莫菲尔前:
Alamofire.request(urlRequest)
同样,我需要使用Moya而不是使用 TargetApi 来实现。
看完下面的文章
我可以说下面的代码应该适合你。
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
}
}
Moya
正在研究Alamofire
并隐藏它的实现。因此,在您的情况下没有任何理由使用 Moya。如果需要,您可以单独使用 Alamofire。
将 URLRequest 传递给Moya
. 唯一的方法是自己下载源代码并添加所需的功能