在我的应用程序中,我使用Moya发出Api请求。在这里,我有URLRequest,但我不知道如何在MoyaProvider中传递它。
Alamofire Ex:
Alamofire.request(urlRequest)
与Same相同,我需要使用Moya而不是使用TargetApi来实现。
答案 0 :(得分:0)
Moya
正在研究Alamofire
并隐藏它的实现。所以没有任何理由在你的情况下使用Moya。如果需要,你可以自己使用Alamofire。
将URLRequest传递给Moya
是没有正确的方法。唯一的方法是下载源代码并自己添加所需的功能
答案 1 :(得分:0)
查看以下文章后
Writing Network Layer with Moya for 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
}
}