封裝Alamofire 網絡數據請求

從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

        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章