问题描述
在 Postman Console 上:
但是在调用项目请求时,Xcode 冻结而不响应。
import Moya
protocol Basetargettype: targettype { }
extension Basetargettype {
public var baseURL: URL { URL(string: EnvConfigs.baseUrl)! }
public var path: String { CommonConfigs.urlPath }
public var method: Moya.Method { .post }
public var sampleData: Data { Data() }
public var headers: [String : String]? { nil }
public var validate: Bool { true }
public var requiredToken: Bool { true }
}
enum ImageTarget {
case upload(data: Data,type: String)
}
extension ImageTarget: Basetargettype {
var task: Task {
switch self {
case let .upload(data,_):
let model = Model(userFile: data)
// here
return .requestJSONencodable(model)
}
}
}
struct Model: Codable {
var action: String = "upload_photo"
var type: String = "3"
var userFile: Data
}
如何像 Postman 一样正确发送带有正文参数的图像?
解决方法
您可能会注意到 Postman 中 ContentType
标头的值设置为 multipart/form-data
。
多部分请求将一组或多组数据组合成一个主体,由边界分隔。您通常将这些请求用于文件上传和在单个请求中传输多种类型的数据(例如,文件和 JSON 对象)。
因此您需要使用 .uploadMultipart
任务来使用 Moya 来实现它。
Moya docs 中有一个代码示例。