ios - moya中如何通过POST请求传递JSON body

标签 ios swift moya

我正在使用 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/

相关文章:

swift - 执行 segue 时的异步检查

ios - 当子类化 UITableView 时如何自定义单元格准备

ios - 容器 View 在 View 上不可见,但在 TableView 内

javascript - 使用 PhoneGap HTML 在 iOS 中自定义 JavaScript 警报

swift - 在 Webview 中查看 Epub 和 PDF 文件

ios - 添加一个微调器,用于使用 RxSwift 和 mvvm 发出 moya 请求,并在用户收到响应时将其关闭

ios - 当值长度== 1时,如何在值前添加 `0`

objective-c - Objc : Class X is implemented in both Y and Z . 将使用两者之一。哪个是未定义的

ios - Swift:UIView 中的 applicationDidBecomeActive?

swift - RxSwift/Moya - 如果通过函数返回序列将不会启动