QNetworking
安装
pod 'QNetworking'
FormDataEncoder
使用
创建一个遵守 FormTransformable
协议的对象
import QNetworking
struct MyForm {
let id: Int
let photo: Data
let filePDF: Data
}
extension MyForm: FormTransformable {
var formDict: [String : Any] {
var dict = [String: Any]()
dict["id"] = id
dict["photo"] = photo
dict["file"] = FormFile(name: "FileName", data: filePDF, type: "application/pdf", fileName: "name" + ".pdf")
return dict
}
}
使用 FormDataEncoder
将您的对象编码为要发送给服务器的数据
let form = MyForm(...)
let formEnc = FormDataEncoder(boundary: API_BOUNDARY)
let data = try? formEnc.encode(form)
高级使用
通常您不需要使用两个内部结构 FormField
和 FormFile
,前者将从您的key:value字典转换而来,后者将从您的key:data字典转换而来,但如果需要使用其他MIME类型,您将不得不像在用法示例中一样直接使用FormFile。
QRequestable
将您的枚举类型遵从于 QRequestable
以获取对 .request
的访问,这将为您提供一个 URLRequest
使用方法
enum API {
case login(username: String)
case pub(id: Int)
}
extension API: QRequestable {
/* Conform to QRequestable */
}
用于您的 URLSession
let dataTask = URLSession.shared.dataTask(with: API.pub(id: 3).request)