我正在使用 moya library发出 POST 请求。在 TargetType 中,我无法看到任何属性来传递参数 [JSON body] 以及 POST 请求。在这里,我附加了 TargetType
public protocol TargetType {
/// The target's base `URL`.
var baseURL: URL { get }
/// The path to be appended to `baseURL` to form the full `URL`.
var path: String { get }
/// The HTTP method used in the request.
var method: Moya.Method { get }
/// Provides stub data for use in testing.
var sampleData: Data { get }
/// The type of HTTP task to be performed.
var task: Task { get }
/// Whether or not to perform Alamofire validation. Defaults to `false`.
var validate: Bool { get }
/// The headers to be used in the request.
var headers: [String: String]? { get }
}
public extension TargetType {
var validate: Bool {
return false
}
}
最佳答案
终于,我找到了解决问题的方法。在 Moya 10.0 中,我们可以在任务属性 [TargetType] 中传递 http body JSON payload。
点击here供引用
var task: Task {
switch self {
case .zen, .showUser, .showAccounts: // Send no parameters
return .requestPlain
case let .updateUser(_, firstName, lastName): // Always sends parameters in URL, regardless of which HTTP method is used
return .requestParameters(parameters: ["first_name": firstName, "last_name": lastName], encoding: URLEncoding.queryString)
case let .createUser(firstName, lastName): // Always send parameters as JSON in request body
return .requestParameters(parameters: ["first_name": firstName, "last_name": lastName], encoding: JSONEncoding.default)
}
}
关于ios - moya中如何通过POST请求传递JSON body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48368833/