论如何巧用链式语法逃出产品和后台魔爪

VicNetRequest是一款基于AFNetworking的高度可定制化的网络请求框架,支持链式语法调用,具备良好的容错性和扩展性。它允许开发者方便地添加自定义需求,如版本号打印等,而无需大量修改现有代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VicNetRequest

VicNetRequest是一套以链式语法的对AFNetworking的封装框架,改框架有三个可取之处

  • 设计该框架的初衷,是为了对付产品和后台,当你相安无事乐呵呵地度过了每一个轻松的日子,产品突然跑过来说,我们要在每个接口都打印一下版本号!!!(╯‵□′)╯︵┻━┻你为什么不早说,现在都进入迭代了你来告诉我要打印什么版本号???那我岂不是要把所有接口都改一遍?或者发个通知给父类ViewController?可是我好像不是所有的ViewController都继承自父类ViewController,产品你过来,把保证不用键盘砸你 当你辛辛苦苦一个一个接口都复制黏贴好了之后后台跑来说,哎呀我忘记处理了某些东西了,现在你要在收到某个字符串之后让把用户踢下线!!!!(╯‵□′)╯︵┻━┻这活还能不能干了!!!! 痛定思痛,必须要有一个能随时更改,高度容错的框架,嗯,响应式是一个很好的选择,于是VicNetRequest诞生了,从来不造轮子的我终于拿起了自己的锄头o( ̄︶ ̄)o

  • 第二就是容错性高。除了必要的参数在debug的时候会通过断言提示,其他参数都可传可不传,都不影响代码的运行。 以上方法若是换成api集中式的话就会出现牵一发动全身的情况,当你要添加一个Version属性做API版本判断的时候,你能怎么办?只能重写方法,然后所有使用的网络请求都要改变方法。(代码来源网上)

- (void)GET:(NSString *)url
        parameters:(id)Parameters
        success:(SuccessBlock)success
        failure:(FailureBlock)failure;
复制代码

本来我只想要发一条最普通的get请求,结果写了这么一大长串是不是很郁闷

[VicNetTools requestWithGetUrl:PBBTokenVerify_URL parameter:@{@"token":token,@"device_id":@(1)} showLoadingView:YES caches:NO cacheResponse:nil success:^(NSDictionary *backDic) {
       
    } fail:^(NSError *error) {
        
    }];
复制代码

但是如果用链式语法的话………就像这样

[VicNetRequest shareManager].vic_model.methodBlock(GET).urlBlock(@"http://api.hykpay.com/api/sys/GetApp?apptype=1").showHudBlock(YES).cacheBlock(NO)
[VicNetRequest shareManager].vic_model.methodBlock(POST).urlBlock(@"http://api.jinniushuju.com/api/sys/BJTime")
复制代码
  • 该框架默认关闭系统自带缓存,使用了更为安全优秀的使用MD5加密的第三方缓存框架PINCache,嗯,很安全

用法

日志:2018-03-15 1.0尚未接入HUD,后续会补上,但是在代码内已经写好了,你只需要在if内写入你的HUD代码即可,具体如下(以SVProgressHUD为例)

//开始发送请求前
if (isShowLoding==YES) {
        [SVProgressHUD show];
    }
    
//收到后台返回数据后
if (isShowLoding==YES) {
    [SVProgressHUD dismiss];
}
复制代码
//get缓存请求有菊花但不进行缓存(但实现了缓存block)
    [[VicNetRequest shareManager].vic_model.methodBlock(GET).urlBlock(@"http://api.hykpay.com/api/sys/GetApp?apptype=1").showHudBlock(YES).cacheBlock(NO) startRequestWithCache:^(NSDictionary *cacheDic) {

    } Success:^(NSDictionary *successDic) {

    } Fail:^(NSError *error) {

    }];
复制代码
//post请求无菊花无缓存
    [[VicNetRequest shareManager].vic_model.methodBlock(POST).urlBlock(@"http://api.jinniushuju.com/api/sys/BJTime") startRequestWithSuccess:^(NSDictionary *successDic) {
        NSLog(@"%@",successDic);
    } Fail:^(NSError *error) {

    }];
复制代码
    //若产品增加需求,且该需求不需要根据后台返回做处理,只需要实现事先准备好的addBlock,或者你自己实现也可以
    [[VicNetRequest shareManager].vic_model.urlBlock(@"http://api.hykpay.com/api/sys/GetApp?apptype=1").methodBlock(GET).addBlock().cacheBlock(YES) startRequestWithCache:^(NSDictionary *cacheDic) {

    } Success:^(NSDictionary *successDic) {
        NSLog(@"%@",successDic);
    } Fail:^(NSError *error) {

    }];
复制代码
   //若产品增加需求,但该需求需要根据后台返回做处理,只需要实现事先准备好的addInNetBlock,或者你自己实现也可以
   //这里需要注意的是需要实例一下,虽然我们上方的也是实例,但是是伪实例
   //在改文件的interface上方@class NetModel;
   NetModel * m = [VicNetRequest shareManager].vic_model;
   [m.methodBlock(POST).urlBlock(@"http://api.jinniushuju.com/api/sys/BJTime") startRequestWithSuccess:^(NSDictionary *successDic) {
       NSLog(@"%@",successDic);
   } Fail:^(NSError *error) {
       
   }];
   m.addInNetBlock = ^{
       NSLog(@"收到数据后调用到我了");
   };
复制代码

更多用法,如上传下载清理缓存请参看demo

我的github

不足之处欢迎吐槽指导,star更好2333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值