從OC轉到swift後,由AFNwtWorking轉爲Alamofire做網絡請求,下面我單獨寫了一個單例請求類
import UIKit
import Alamofire
import SwiftyJSON
let BaseUrl = "https://httpbin.org/get"
private let NetWorkRequestShareInstance = NetWorkRequest()
class NetWorkRequest{
class var sharedInstance:NetWorkRequest {
return NetWorkRequestShareInstance
}
}
extension NetWorkRequest{
func getRequest(UrlString:String,params:[String:Any]?,success:@escaping(_ response:[String:AnyObject])->(),failure:@escaping(_ error:Error)->()) {
let PathUrl = BaseUrl+UrlString
Alamofire.request(PathUrl, method: .get, parameters: params).responseJSON { (response) in
switch response.result{
case .success(let value):
//當響應成功是,使用臨時變量value接受服務器返回的信息並判斷是否爲[String: AnyObject]類型 如果是那麼將其傳給其定義方法中的success
if let value = response.result.value as? [String:AnyObject]{
success(value)
}
let json = JSON(value)
print(json)
case .failure(let error):
failure(error)
print(error)
}
}
}
//paramer mark===post請求 =
func postRequest(UrlString:String,paramer:[String:Any],success:@escaping(_ response:[String:AnyObject])->(),failure:@escaping(_ error:Error)->()){
let PathUrl = BaseUrl+UrlString
Alamofire.request(PathUrl, method: HTTPMethod.post, parameters: paramer).responseJSON { (response) in
switch response.result{
case .success:
if let value = response.result.value as? [String:AnyObject]{
success(value)
}
case .failure(let error):
failure(error)
}
}
}
///上傳圖片
func upLoadImageRequest(UrlString:String,params:[String:String],data:[Data],name:[String],success:@escaping(_ response:[String:AnyObject])->(),failure:@escaping(_ error:Error)->()){
let headers = ["content-type":"multipart/form-data"]
let PathUrl = BaseUrl+UrlString
Alamofire.upload(multipartFormData: { (multipartforData) in
let flag = params["flag"]
let userId = params["userId"]
multipartforData.append((flag?.data(using: String.Encoding.utf8))!, withName: "flag")
multipartforData.append((userId?.data(using: String.Encoding.utf8))!, withName: "userId")
for i in 0..<data.count{
multipartforData.append(data[i], withName: "appPhoto", fileName: name[i], mimeType: "image/png")
}
}, to: PathUrl,
headers: headers,
encodingCompletion: { encodingResult in
switch encodingResult {
case .success(let upload, _, _):
upload.responseJSON { response in
if let value = response.result.value as? [String: AnyObject]{
success(value)
let json = JSON(value)
print(json)
}
}
case .failure(let encodingError):
print(encodingError)
}
}
)
}
}
外部調用網絡請求示例,
NetWorkRequest.sharedInstance.getRequest(UrlString:BaseUrl, params:nil, success: { (response) in
print(response)
}) { (error) in
}