iOS网络请求框架YKSwiftNetworking

338 阅读2分钟

iOS网络请求框架YKSwiftNetworking

前期说明:

链接:


https://github.com/541278903/YKSwiftNetworking.git

本库特点:

  1. 链式编程

  2. 积极贴近swift语法

  3. 侵入性低

项目引入:

  1. Alamofire

  2. RxSwift(可选项,有需要者可接入RxSwift模块文末有提示)

基础使用:

基础


//创建

var normalnetwork = YKSwiftNetworking.init()

//设置请求模式

normalnetwork = normalnetwork.method(.GET)

//设置请求地址

normalnetwork = normalnetwork.url("https://ios.tipsoon.com")

//设置请求参数

normalnetwork = normalnetwork.params(["paramsKey":"paramsValue"])

//添加请求头

normalnetwork = normalnetwork.header(["headerKey":"headerValue"])

//添加请求进度

normalnetwork = normalnetwork.progress({ progress in

//progress 进度的百分比

})


//执行请求

// warning 无论是下载上传还是普通请求,都将统一使用此方法回调

normalnetwork.exectue { result in

  switch result {

    case .success(let yKSwiftNetworkRequest, let yKSwiftNetworkResponse):

//请求成功模块

//yKSwiftNetworkRequest 本次请求的请求头

//yKSwiftNetworkResponse 本次请求的响应体

      break

    case .failure(let yKSwiftNetworkRequest, let error):

//请求失败模块

//yKSwiftNetworkRequest 本次请求的请求头

//error 本次请求的错误原因

    break

  }

}

高阶


//请求的统一处理方式

normalnetwork.handleResponse = { response,request in

     //动态对返回数据进行修改

     response.rawData = "123"

     //如果本次请求不满意可进行返回error则本次请求直接当做错误返回

     return NSError(domain: "yk.error", code: -1, userInfo: [

          NSLocalizedDescriptionKey:"初始egsrgwerg化发生错误",

          NSLocalizedFailureReasonErrorKey:"初始化发wefgawegfaweg生错误",

          NSLocalizedRecoverySuggestionErrorKey:"初始化segserg发生错误",

     ])

}

  



// 本次请求将不进行网络数据传输,直接返回设定的mock数据

// warning: 设置mockData后将不会进行网络请求

normalnetwork = normalnetwork.mockData(["123","321"])


// 本次请求往body中添加内容

// httpBody传入的将是Data对象

normalnetwork = normalnetwork.httpBody(Data.init(base64Encoded: "{\"test\":\"1\"}"))

上传

设置uploadData方法,设置后本次请求为上传的post请求


let data = UIImageJPEGRepresentation(UIImage.init(named: "test.jpg")!, 0.1)!

        

// 预处理上传数据

// data:上传的二进制数据

// filename:文件名

// mimetype:文件分类名

// formDataName:当前数据的参数名称(后端根据此字段获取响应数据)

normalnetwork = normalnetwork.uploadData(data: data, filename: "text.jpeg", mimeType: "image/jpeg", formDataName: "file")

  


  


下载


设置下载地址

  


其中path只需设置缓存的文件夹路径就好,路径将放在cache沙盒中,最终完整的下载路径为cache+'设置的path'+‘下载文件名'

  


// 本次下载请求的保存路径,仅需要针对获取路径的文件夹名即可,我将自动保存在cache沙盒中,并自动使用服务器下载的文件名

normalnetwork = normalnetwork.downloadDestPath("download/jpeg")

引入RxSwift


pod 'YKSwiftNetWorking/RxSwift'

开始Rxswift

//唯一跟普通的区别在执行的内容

var normalnetwork = YKSwiftNetworking.init()

  


//产生请求报文

let single = normalnetwork.rx.request()

  


//申请请求

single.subscribe(onNext: { data in

  


}).dispose()