首先这是摘抄自大神的网络请求,后台非常规范的时候建议使用,我再此基础上稍微改了下,也不知道有没有弄巧成拙
headers 里面内容可看我前面的文章 iOS 获取设备信息 (OC/Swift)
import HandyJSON
import Alamofire
import CocoaLumberjack
// MARK: 5.getter
private static let msgNetError = "网络错误,请联网后点击重试"
private static let msgDataError = "获取网络数据失败"
private static let manager = NetworkReachabilityManager()
private class var headers: HTTPHeaders {
get {
let head: HTTPHeaders = [
"iphone_name": iphone_name,
"device_name": device_name,
"device_model": device_model,
"device_IDFA": device_idfa,
"system_name": system_name,
"system_version": system_version,
"app_version": app_version,
]
return head
}
}
///返回数据类型
enum HTTPDataType: Int {
case one //单个 model
case more //数组 model
case text //字符串
}
///后台返回数据类型
struct netResponseData: HandyJSON {
var code: Int = 0
var msg: String?
var data: Any?
}
///返回数据类型
enum HTTPDataType: Int {
case one //单个 model
case more //数组 model
case text //字符串
}
///后台返回数据类型
struct netResponseData: HandyJSON {
var code: Int = 0
var msg: String?
var data: Any?
}
下面就是网络请求了,总体都放在
public class Networking {
}
返回单 model 网络请求
public class func request<T:HandyJSON>(url:String,
modelType: T.Type,
method: HTTPMethod = .post,
parameters: [String: String] = [:],
successBlock: @escaping (_ type: HTTPResultType, _ model: T?, _ msg:String) -> Void){
var encoding:ParameterEncoding = URLEncoding.default
if method == .post {
encoding = JSONEncoding.default
}
var dict = parameters
if token.isEmpty == false {
dict["token"] = token
}
AF.request(url, method: method, parameters: dict, encoding: encoding, headers: headers).responseJSON { (data) in
DDLogInfo("\n<请求url>:\n\(url) \n<请求参数>:\n\(String(describing: dict)) \n<请求头>:\n\(headers) \n<返回结果>:\n\(data) ")
responseData(.one, data,