美文网首页
iOS开发之YTKNetwork 填坑

iOS开发之YTKNetwork 填坑

作者: 朱晓晓的技术博客 | 来源:发表于2017-08-01 11:56 被阅读481次

    相关文章参考:
    https://github.com/yuantiku/YTKNetwork](https://github.com/yuantiku/YTKNetwork
    http://www.jianshu.com/p/30dd2f665933
    http://blog.csdn.net/majiakun1/article/details/49075917

    填坑

    1-1.开发碰到跟平台打交道,大多数采用的是json格式,但是YTKNetwork采用默认的是http,所以,如果项目的请求类型跟响应类型都是json,在你的请求类里边,重写这两个方法,否则请求失败
    默认请求和响应类型 手动更改
    1-2 请求的参数,正常来说,如果使用AFN,除去请求header需要单独设置外,body的参数需要我们手动添加即可,但是YTKNetwork却不是,发送请求的header跟body 需要这么写(不知道是平台的原因,还是框架的原因)
    image.png
    1-3 线程问题,使用此类YTKChainRequest

    例如,我们有一个需求,需要用户在注册时,先发送注册的Api,然后:
    如果注册成功,再发送读取用户信息的Api。并且,读取用户信息的Api需要使用注册成功返回的用户id号。
    如果注册失败,则不发送读取用户信息的Api了。
    以下是具体的代码示例,在示例中,我们在sendChainRequest方法中设置好了Api相互的依赖,然后。 我们就可以通过chainRequestFinished回调来处理所有网络请求都发送成功的逻辑了。如果有任何其中一个网络请求失败了,则会触发chainRequestFailed回调。

    - (void)sendChainRequest {
        RegisterApi *reg = [[RegisterApi alloc] initWithUsername:@"username" password:@"password"];
        YTKChainRequest *chainReq = [[YTKChainRequest alloc] init];
        [chainReq addRequest:reg callback:^(YTKChainRequest *chainRequest, YTKBaseRequest *baseRequest) {
            RegisterApi *result = (RegisterApi *)baseRequest;
            NSString *userId = [result userId];
            GetUserInfoApi *api = [[GetUserInfoApi alloc] initWithUserId:userId];
            [chainRequest addRequest:api callback:nil];
    
        }];
        chainReq.delegate = self;
        // start to send request
        [chainReq start];
    }
    
    - (void)chainRequestFinished:(YTKChainRequest *)chainRequest {
        // all requests are done
    }
    
    - (void)chainRequestFailed:(YTKChainRequest *)chainRequest failedBaseRequest:(YTKBaseRequest*)request {
        // some one of request is failed
    }
    
    个人建议,如果项目不是特别的复杂,请求类之间需要特别的依赖,用AFN就足够,反过来说,使用YTK可以每个请求都单独出来,对于大型的项目开发,管理上有一定优势

    相关文章

      网友评论

          本文标题:iOS开发之YTKNetwork 填坑

          本文链接:https://www.haomeiwen.com/subject/xocjlxtx.html