# MNetworkModel (opens new window)
# 该框架是基于 NSURLSession 原生组件编写,该组件是一个高度可配置的容器,通过使用其提供的API,可对网络进行细粒度的管理控制。
# 该组件集成至所有素+系列IOS应用内,其组件内部抽象程度和调用程度较高。
# 说明
- 快速构建业务场景,组件对数据交互进行反射处理
- 集成公司内部统一TOKEN 安全机制,并集成多TOKEN并存机制
- 支持弱网自动识别并发起三次请求、引入分类以及错误逻辑处理等机制,为使用者提供业务场景便利。
- 支持异步和链式请求方式,仅支持POST请求(可根据需要进行拓展请求方式)
- 整体框架设计参考YTKNetwork (opens new window)
# 安装
- 该组件适用于IOS 10 (opens new window) 及以上SDK应用运行
- 该组件遵守Cocoapods (opens new window) 协议,并通过Cocoapods (opens new window) 进行集成
在项目 Podfile 文件内添加
pod 'MNetworkModel',:git => 'http://192.168.100.254:3000/iosteam/MNetworkModel.git', :branch => 'delete_unuse_file'
在项目目录下执行脚本
pod install
插件即可集成至项目内
# 使用
首先需要全局配置
在NetworkCenter (opens new window) 是单例对象,配置全局网络请求参数,属性过多不一一列举,可具体参考文件属性声明以及注释
+ (instancetype)sharedInstance;
该文件还提供多TOKEN机制管理可参考NetworkCenter+Token.h (opens new window) 分类所提供API,最为主要的是这个指定当前的Token。
- (void)targetAtNetworkURLDelegate:(id<NetworkURLDelegate>)urlDelegate;
可以翻阅组件内可以看URLDelegateInfo (opens new window) 是NetworkURLDelegate (opens new window) 协议的实例化,其中仅提供两个初始化对象方法
- (instancetype)initWithType:(NetworkURLType)urlType host:(NSString *)host;
- (instancetype)initWithType:(NetworkURLType)urlType host:(NSString *)host authInfo:(AuthInfo *)authInfo;
其次发起请求具体分为两个步骤
1.实例化出NetworkRequest (opens new window) 对象
2.调用NSObject+NetworkRequest (opens new window) 所提供的API发起网络请求
NetworkRequest对象虽然只提供两个初始化方法,但NetworkRequest和基类MBaseRequest提供了丰富的属性进行请求配置,网络请求结果会从*NetworkCompletedBlock中返回。因涉及太多属性不一一列举,可参考源文件。
- (instancetype)initWithResponseBlock:(NetworkCompletedBlock)responseBlock;
NetworkCompletedBlock声明如下
//网路请求Block
typedef void (^NetworkCompletedBlock)(BOOL isSuccess, NetworkRequest * _Nullable request, NetworkResponse * _Nullable response);
调用 NSObject+NetworkRequest (opens new window) 所以提供的API即可发起网络请求。因调用入口是使用NSObject分类编写,即可以在所有的继承NSObject的对象上使用网络请求。 该API提供异步和链式请求方式,并重载了多个方法提供适用不同场景的API,方便复杂业务场景使用。
/**
* 异步发起请求
* @param request 请求对象
*/
- (void)asynStartRequest:(NetworkRequest *)request;
/**
* 异步发起请求
@param request 请求对象
@param sendNetworkTarget 指定谁发起请求 作用当请求失败后,会判断当前的object有么实现 NetworkNothingProtocol 方法
*/
- (void)asynStartRequest:(NetworkRequest *)request withSendNetworkTarget:(id<NetworkNothingProtocol> )sendNetworkTarget;
/**
异步发起请求
@param request 请求对象
@param visableView 在指定View上显示Tip
*/
- (void)asynStartRequest:(NetworkRequest *)request visableView:(UIView *)visableView;
/**
队列发起请求
@param request 请求对象
@param visableView 在指定View上显示Tip
*/
- (void)queuePushRequest:(NetworkRequest *)request visableView:(UIView *)visableView;
/**
* 异步发起请求
@param request 请求对象
@param visableView isableView 在指定View上显示Tip
@param sendNetworkTaget 指定谁发起请求 作用当请求失败后,会判断当前的object有么实现 NetworkNothingProtocol 方法
*/
- (void)asynStartRequest:(NetworkRequest *)request visableView:(UIView *)visableView withSendNetworkTarget:(id<NetworkNothingProtocol> )sendNetworkTarget;
至此网络组件介绍完毕。