KJNetworkPluginManager插件版網(wǎng)絡(luò)請(qǐng)求庫
KJNetworkPlugin 是一款基于面向協(xié)議的網(wǎng)絡(luò)抽象層的插件版網(wǎng)絡(luò)請(qǐng)求庫,基于AFNetworking的基礎(chǔ)上再次封裝使用。
- 熟悉swift的朋友應(yīng)該都知道一款優(yōu)秀的三方庫Moya,插件版網(wǎng)絡(luò)請(qǐng)求是真香,于是乎借鑒思路制作一款純oc版本的插件網(wǎng)絡(luò)請(qǐng)求庫
- 熟悉oc的朋友又應(yīng)該都知道一款優(yōu)秀的三方庫YTKNetwork,基于對(duì)象的協(xié)議版網(wǎng)絡(luò)請(qǐng)求,然后他的批量網(wǎng)絡(luò)請(qǐng)求和鏈?zhǔn)骄W(wǎng)絡(luò)請(qǐng)求也超級(jí)香
- 結(jié)合一下兩者優(yōu)點(diǎn),制作一款
批量和鏈?zhǔn)?/code>插件版網(wǎng)絡(luò)請(qǐng)求庫 - 目前整理九款插件:解析插件,緩存插件,配置自建證書插件,加載提示插件,修改請(qǐng)求插件,日志抓包插件,錯(cuò)誤碼插件,刷新插件,網(wǎng)絡(luò)錯(cuò)誤和空數(shù)據(jù)插件
功能清單
插件版網(wǎng)絡(luò)請(qǐng)求可以更方便快捷的定制專屬網(wǎng)絡(luò)請(qǐng)求,并且支持批量操作,鏈?zhǔn)讲僮?/p>
主要功能清單如下:
- 支持基本的網(wǎng)絡(luò)請(qǐng)求,下載上傳文件
- 支持配置通用請(qǐng)求跟路徑,通用參數(shù)等
- 支持設(shè)置加載和提示框插件
- 支持解析結(jié)果插件
- 支持網(wǎng)絡(luò)緩存插件
- 支持配置自建證書插件
- 支持修改請(qǐng)求體和獲取響應(yīng)結(jié)果插件
- 支持網(wǎng)絡(luò)日志抓包插件
- 支持刷新加載更多插件
- 支持錯(cuò)誤碼解析插件
- 支持錯(cuò)誤和空數(shù)據(jù)UI展示插件
- 支持批量操作
- 支持鏈?zhǔn)骄W(wǎng)絡(luò)請(qǐng)求
使用教程
模塊組成
簡單講應(yīng)該分為這么幾大板塊:
- Chain:鏈?zhǔn)讲寮婢W(wǎng)絡(luò)請(qǐng)求
- Batch:批量插件版網(wǎng)絡(luò)請(qǐng)求
- Network:插件管理器和網(wǎng)絡(luò)請(qǐng)求基類
- Plugins:插件集合,目前已有5款插件供使用 - Loading:加載錯(cuò)誤提示插件 - Anslysis:數(shù)據(jù)解析插件 - Cache:緩存插件 - Certificate:自建證書插件 - Thief:修改器插件 - Capture:網(wǎng)絡(luò)日志抓包插件 - Code:錯(cuò)誤碼插件 - Refresh:刷新插件 - Empty:網(wǎng)絡(luò)錯(cuò)誤和空數(shù)據(jù)UI插件
Network版塊
- KJBaseNetworking:網(wǎng)絡(luò)請(qǐng)求基類,基于 AFNetworking 封裝使用
- 這里也提供兩個(gè)入口,設(shè)置通用的根路徑和通用參數(shù),類似:userID,token等
/// 根路徑地址
@property (nonatomic, strong, class) NSString *baseURL;
/// 基本參數(shù),類似:userID,token等
@property (nonatomic, strong, class) NSDictionary *baseParameters;
- 封裝的有基本的網(wǎng)絡(luò)請(qǐng)求,上傳下載文件等方法
- KJNetworkingRequest:請(qǐng)求體,設(shè)置網(wǎng)絡(luò)請(qǐng)求相關(guān)參數(shù),其中包含參數(shù),請(qǐng)求方式,插件等等
- KJNetworkingResponse:響應(yīng)請(qǐng)求結(jié)果,獲取插件之間產(chǎn)生的數(shù)據(jù)等等
- KJNetworkingType:匯總所有枚舉和回調(diào)聲明
- KJNetworkBasePlugin:插件基類,插件父類
- KJNetworkPluginManager:插件管理器,中樞神經(jīng)
/// 插件版網(wǎng)絡(luò)請(qǐng)求
/// @param request 請(qǐng)求體
/// @param success 成功回調(diào)
/// @param failure 失敗回調(diào)
+ (void)HTTPPluginRequest:(KJNetworkingRequest *)request success:(KJNetworkPluginSuccess)success failure:(KJNetworkPluginFailure)failure;
- 目前抽離出以下5條協(xié)議方法,其中大致分為開始時(shí)刻、網(wǎng)絡(luò)請(qǐng)求時(shí)刻、網(wǎng)絡(luò)成功、網(wǎng)絡(luò)失敗、最終返回
/// 開始準(zhǔn)備網(wǎng)絡(luò)請(qǐng)求
/// @param request 請(qǐng)求相關(guān)數(shù)據(jù)
/// @param endRequest 是否結(jié)束下面的網(wǎng)絡(luò)請(qǐng)求
/// @return 返回準(zhǔn)備插件處理后的數(shù)據(jù)
- (KJNetworkingResponse *)prepareWithRequest:(KJNetworkingRequest *)request endRequest:(BOOL *)endRequest;
/// 網(wǎng)絡(luò)請(qǐng)求開始時(shí)刻請(qǐng)求
/// @param request 請(qǐng)求相關(guān)數(shù)據(jù)
/// @param stopRequest 是否停止網(wǎng)絡(luò)請(qǐng)求
/// @return 返回網(wǎng)絡(luò)請(qǐng)求開始時(shí)刻插件處理后的數(shù)據(jù)
- (KJNetworkingResponse *)willSendWithRequest:(KJNetworkingRequest *)request stopRequest:(BOOL *)stopRequest;
/// 成功接收數(shù)據(jù)
/// @param request 請(qǐng)求相關(guān)數(shù)據(jù)
/// @param againRequest 是否需要再次請(qǐng)求該網(wǎng)絡(luò)
/// @return 返回成功插件處理后的數(shù)據(jù)
- (KJNetworkingResponse *)succeedWithRequest:(KJNetworkingRequest *)request againRequest:(BOOL *)againRequest;
/// 失敗處理
/// @param request 請(qǐng)求相關(guān)數(shù)據(jù)
/// @param againRequest 是否需要再次請(qǐng)求該網(wǎng)絡(luò)
/// @return 返回失敗插件處理后的數(shù)據(jù)
- (KJNetworkingResponse *)failureWithRequest:(KJNetworkingRequest *)request againRequest:(BOOL *)againRequest;
/// 準(zhǔn)備返回給業(yè)務(wù)邏輯時(shí)刻調(diào)用
/// @param request 請(qǐng)求相關(guān)數(shù)據(jù)
/// @param error 錯(cuò)誤信息
/// @return 返回最終加工之后的數(shù)據(jù)
- (KJNetworkingResponse *)processSuccessResponseWithRequest:(KJNetworkingRequest *)request error:(NSError **)error;
Plugins插件集合
目前已有9款插件供使用:
-
KJNetworkLoadingPlugin:基于MBProgressHUD封裝的加載框和錯(cuò)誤提示框插件
-
KJNetworkAnslysisPlugin:基于MJExtension封裝的解析數(shù)據(jù)插件
-
KJNetworkCachePlugin:基于YYCache封裝的網(wǎng)絡(luò)緩存插件
-
KJNetworkCertificatePlugin:配置自建證書插件
-
KJNetworkThiefPlugin:修改
KJNetworkingRequest和獲取KJNetworkingResponse插件 -
KJNetworkCapturePlugin:網(wǎng)絡(luò)日志抓包插件
-
KJNetworkCodePlugin:錯(cuò)誤碼解析插件
-
KJNetworkRefreshPlugin:刷新加載更多插件
-
KJNetworkEmptyPlugin:錯(cuò)誤信息和空數(shù)據(jù)UI展示插件
Chain鏈?zhǔn)讲寮W(wǎng)絡(luò)
Batch批量插件網(wǎng)絡(luò)
關(guān)于作者
- ??郵箱地址:[email protected] ??
- ??GitHub地址:yangKJ ??
- ??掘金地址:茶底世界之下 ??
- ????簡書地址:77___ ????
評(píng)論
圖片
表情
