CocoaPods trunk is moving to be read-only. Read more on the blog, there are 18 months to go.

YWAPINetManager 1.1.3

YWAPINetManager 1.1.3

Maintained by YWRouter.



  • By
  • Mrs Yao

YWAPINetManager

基于AFNetworking的高阶网络请求管理器

简介

是一套基于AFNetworking 3.1.0封装的网络库,提供了更高层次的抽象和更方便的调用方式。

环境要求

该库需运行在 iOS 8.0 和 Xcode 7.0以上环境.

集成方法

YWAPINetManager 可以在CocoaPods中获取,将以下内容添加进你的Podfile中后,运行pod install即可安装:

pod 'YWAPINetManager'

特性

  • 提供支持集约型API调用方式和离散型API调用方式
  • 提供大多数网络访问方式和相应的序列化类型
  • 提供简洁的请求参数设置
  • 提供修改请求头和移除请求头
  • 提供api请求结果映射接口,可以自行转换为相应的数据格式
  • 提供支持POST方式的raw的数据的api
  • 支持请求前避免重复请求检测,避免不必要的请求
  • 方便管理每个网络请求API
  • 网络层上部分使用离散型设计,下部分使用集约型设计
  • 设计合理的继承机制,使用IOP的方式让派生出来的YWAPIBaseManager受到限制,避免混乱
  • 设计统一的接口协议处理请求结果数据

使用

  • 1:继承YWAPINetManager,并遵守协议YWNetworkingProtocol

    • 示列

        @interface YWTestManager : YWAPINetManager <YWNetworkingProtocol>
      
        @end
      
  • 2:设置地址和请求方式

    • 示列

        @implementation YWTestManager
        
        - (NSString *)urlString{
        return @"https://route.showapi.com/255-1?showapi_appid=45178&showapi_sign=1bc67a7c980a4a5d86f1f0d9424a023e&type=";
        }
        - (YWAPIManagerRequestMethod)requestMethod{
        return YWAPIManagerRequestMethodGet;
        }
      
  • 3.1:发送请求和delegate回调(方式一)

      _manager = [YWTestManager new];
      _manager.paramSource = self;
      _manager.delegate = self;
      [_manager sendOnLoadData];
    
      //设置参数
      - (NSDictionary *)paramsForApi:(YWAPINetManager *)manager{
    
      return nil;
    
      }
      //失败回调
      - (void)networkingCallAPIDidFailed:(YWAPINetManager *)manager{
      
      NSLog(@"错误-------\n%@",manager.response.errorMessage);
      
      }
      //成功回调
      - (void)networkingCallAPIDidSuccess:(YWAPINetManager *)manager{
      
      NSLog(@"成功---------\n%@",manager.response.content);
      }
    
  • 3.2:发送请求和block回调(方式二)

      [YWTestManager loadDataWithParams:nil success:^(YWAPINetManager * _Nullable manager) {
    
          } fail:^(YWAPINetManager * _Nullable manager) {
    
      }];
    
  • 3.3:接口统一处理协议

/**
 * 进行容错处理协议
 * 业务场景:
 * 如:1、登录token失效,在遵守该协议的类统一处理登录事件或者刷新token
 *    2、后台进行error的处理,返回给手机端code或者status代表成功和失败,因此也可以进行统一事件处理
 */
@protocol YWNetworkingConnectProtocol <NSObject>
@required
/**
 处理网络请求成功的数据(如处理后台返回的code或者status的某个值作为请求请求成功的代表,因此YWURLResponse特意开放code属性给外界,以便接收后台返回的状态)
 response.status==YWURLResponseStatusSuccess//作为底层,请求是否成功只考虑是否成功收到服务器反馈。至于签名是否正确,返回的数据是否完整,由上层的YWAPINetManager来决定。
 因此,实现该方法,可以统一处理数据是否完整性,从而剥离每个上层的YWAPINetManager来处理
 @param response 网络请求成功后的数据对象
 @param urlResponse 网络请求本身block的response,可以选择性处理
 @return 返回response.content的值(必须返回),
 */
- (id _Nullable )networkingDidSuccessDealWith:(YWURLResponse *_Nullable)response withRespone:(NSURLResponse *_Nullable)urlResponse;
/**
 处理网络请求失败的数据(如处理NSURLResponse的状态(statusCode))
 之前我在一家公司,遇到一个比较奇葩的处理 :NSHTTPURLResponse *ta = (NSHTTPURLResponse *)urlResponse; if (ta.statusCode == 401) {//刷新token},要去取NSURLResponse里的状态判断token是否失效,后台没有对异常信息处理,因此该方法针对特殊情况处理
 因此,实现该方法,可以统一处理数据是否完整性,从而剥离每个上层的YWAPINetManager来处理
 @param response 网络请求失败后的数据对象
 @param urlResponse 网络请求本身block的response,可以选择性处理
 @return 返回nil(暂时未使用到改值)
 */
- (id _Nullable )networkingDidFailedDealWith:(YWURLResponse *_Nullable)response withRespone:(NSURLResponse *_Nullable)urlResponse;

@end

更多详细使用,请查看demo