如何在 moya 中通过 POST 请求传递 JSON 正文

Posted

技术标签:

【中文标题】如何在 moya 中通过 POST 请求传递 JSON 正文【英文标题】:How to pass the JSON body with POST request in moya 【发布时间】:2018-01-21 16:10:16 【问题描述】:

我正在使用moya library 发出 POST 请求。在 TargetType 中,我看不到任何属性来传递参数 [JSON 正文] 以及 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
    

【问题讨论】:

我添加了图书馆的链接。也就是说,发布指向您正在寻求帮助的图书馆的链接总是一个好主意。 【参考方案1】:

最后,我找到了解决问题的方法。在 Moya 10.0 中,我们可以在任务属性 [TargetType] 中传递 http 正文 JSON 负载。

点击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)
    

【讨论】:

唯一的区别是编码参数?有点奇怪。

以上是关于如何在 moya 中通过 POST 请求传递 JSON 正文的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Vuex 中通过 POST 请求发送状态数据?

iOS Swift moya框架发送数组作为请求参数(GET/POST)

如何在浏览器中通过 POST 请求加载外国图像?

如何在 django 中通过 AJAX 请求传递数据?

如何在 Moya 中传递 URLRequest

如何在php网页中通过一个表单让使用者输入数据提交后把输入的数据传递到mysql数据库中?