web-dev-qa-db-ja.com

POST moyaのリクエストでJSONボディを渡す方法

moyaライブラリー を使用してPOSTリクエストを作成します。TargetTypeで、パラメーターを渡すためのプロパティを確認できませんでした[JSON本文] POST request。ここでは、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
    }
}
7
sathish

最後に、私は私の問題の解決策を得ました。 Moya 10.0では、httpプロパティのJSONペイロードをタスクプロパティ[TargetType]で渡すことができます。

クリック ここ 参照用

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)
    }
}
12
sathish