Swift网络框架封装
2017-02-25 本文已影响673人
fd320d65dbd8
GitHub传送门https://github.com/JonHory/JHNetwork
导航
<a id="介绍"></a> 介绍:
-
使用Swift3.1,基于Alamofire4.0+、SwiftyJSON封装的网络中间层,提供快速缓存策略,帮助日常开发。
-
实现了GET/POST请求JSON数据,可定义每一个请求是否缓存成功的回调数据。
-
利用请求的url拼接传入的参数字典,形成唯一性的字符串,经过MD5加密后保存至
Library/Caches/JHNetworkCaches
文件夹,该路径可自行修改。 -
当调用一个请求方法时,会经过以下逻辑判断处理:
-
判断
shoulObtainLocalWhenUnconnected
(网络异常时是否返回缓存数据) -
判断当前
networkStatus
(当前网络状态)为unknown
或notReachable
-
同时满足1、2点,尝试获取缓存,若有缓存,则返回成功的回调
-
判断
refreshCache
(是否刷新缓存) -
若第5点为否,则尝试获取缓存,若有缓存,则返回成功的回调
-
正式开始发起网络请求
-
成功回调的处理,利用
SwiftyJSON
解析- 如果
refreshCache
(是否刷新缓存)且isCache
(是否缓存),则缓存回调数据 - 返回成功的回调
- 如果
-
失败回调的处理
- 如果
error.code < 0
且isCache
,尝试获取缓存,若有缓存,则返回成功的回调 - 返回失败的回调
- 如果
-
<a id="TODO"></a> TODO:
- 上传相关请求
- 下载相关请求
<a id="快速接入"></a>快速接入:
- 将
JHNetwork.swift
拖入项目中 -
pod
导入
pod 'Alamofire', '~> 4.3'
pod 'SwiftyJSON', '~> 3.1.4'
- 在项目的Build Settings里配置Swift Compiler - Custom Flags,展开Other Swift Flags,在Debug右侧输入
-D DEBUG
<a id="代码示例"></a>代码示例:
- 如果想在网络状态异常时返回缓存数据,可以在
AppDelegate.swift
中设置
JHNetwork.shared.shoulObtainLocalWhenUnconnected(shouldObtain: true)
- GET请求,默认缓存
//刷新缓存
getForJSON(url:finished:)
//可带参数,刷新缓存
getForJSON(url:parameters:finished:)
//可设置是否刷新缓存
getForJSON(url:refreshCache:parameters:finished:)
- GET请求,默认不缓存
getNoCacheForJSON(url:finished:)
getNoCacheForJSON(url:parameters:finished:)
getNoCacheForJSON(url:refreshCache:parameters:finished:)
- POST请求,默认缓存
postForJSON(url:finished:)
postForJSON(url:parameters:finished:)
postForJSON(url:refreshCache:parameters:finished:)
- POST请求,默认不缓存
postNoCacheForJSON(url:finished:)
postNoCacheForJSON(url:parameters:finished:)
postNoCacheForJSON(url:refreshCache:parameters:finished:)
- 最底层的请求方法
/// 请求JSON数据最底层
///
/// - Parameters:
/// - methodType: GET/POST
/// - urlStr: 接口
/// - refreshCache: 是否刷新缓存,如果为false则返回缓存
/// - isCache: 是否缓存
/// - parameters: 参数字典
/// - finished: 回调
requestJSON(methodType:urlStr:refreshCache:isCache:parameters:finished:)
- 尝试获取指定url和参数的缓存
getCacheForJSON(url:parameters:finished:)
- 获取当前网络数据缓存字节数
totalCacheSize()
- 清除缓存
clearCaches()
灵感
- 灵感来自于HYBNetworking。
联系我
- 如果在使用过程中遇到问题,或者想要与我分享,吐槽我jonhory@163.com
- 喜欢请点个赞呗~