iOS网络请求框架YKSwiftNetworking
前期说明:
链接:
https://github.com/541278903/YKSwiftNetworking.git
本库特点:
-
链式编程
-
积极贴近swift语法
-
侵入性低
项目引入:
-
Alamofire
-
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()