[英]How to Pass the URLRequest in Moya
In my Application, I'm using Moya to make the Api request. 在我的应用程序中,我使用Moya发出Api请求。 Here, I'm having URLRequest but I don't know how to pass it in MoyaProvider.
在这里,我有URLRequest,但是我不知道如何在MoyaProvider中传递它。
Alamofire Ex: Alamofire前:
Alamofire.request(urlRequest)
Like the Same, I need to implement using Moya instead of using TargetApi. 像Same一样,我需要使用Moya而不是TargetApi来实现。
Moya
is working on Alamofire
and hidden it realization. Moya
正在研究Alamofire
并隐藏了它的实现。 So the is no any reason to use Moya in your case. 因此,没有理由在您的情况下使用Moya。 You can just use Alamofire by it-self if you need it.
如果需要,您可以自行使用Alamofire。
The is no correct way to pass URLRequest to Moya
. 这不是将URLRequest传递给
Moya
正确方法。 Only way is to download source code and add needed functionality by yourself 唯一的方法是自行下载源代码并添加所需的功能
After looking into the following article 看完下面的文章
Writing Network Layer with Moya for Swift 使用Moya为Swift编写网络层
I can say following code should work for you. 我可以说以下代码适合您。
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.