如何在 Moya 中传递 URLRequest
Posted
技术标签:
【中文标题】如何在 Moya 中传递 URLRequest【英文标题】:How to Pass the URLRequest in Moya 【发布时间】:2018-02-27 14:10:19 【问题描述】:在我的应用程序中,我使用Moya 发出 Api 请求。在这里,我有 URLRequest 但我不知道如何在 MoyaProvider 中传递它。
Alamofire 例如:
Alamofire.request(urlRequest)
同理,我需要使用Moya而不是使用TargetApi来实现。
【问题讨论】:
你打算用 moya 进行更明确的调用还是只是简单的事情 检查以下答案但您可能需要根据您的 url 和请求类型进行一些更改 即使 Moya 建立在 Alamofire 之上,你仍然不应该直接使用 Alamofire api。 @HarshalBhavsar 给了你一个正确的答案。 @StasBaranovskiy 感谢您的关注。 【参考方案1】:看完下面的文章
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
【讨论】:
【参考方案2】:Moya
正在处理Alamofire
并隐藏了它的实现。因此,在您的情况下没有任何理由使用 Moya。如果需要,您可以单独使用 Alamofire。
将 URLRequest 传递给 Moya
的方法不正确。唯一的办法是自己下载源代码并添加所需的功能
【讨论】:
以上是关于如何在 Moya 中传递 URLRequest的主要内容,如果未能解决你的问题,请参考以下文章