Coder Social home page Coder Social logo

ytknetwork's Introduction

YTKNetwork

YTKNetwork是什么

YTKNetwork是猿题库基于AFNetworking封装的一套High Level的API,用于提供更高层次的网络访问抽象。它现在同时被使用在猿题库公司的所有产品的iOS端,包括:猿题库小猿搜题粉笔直播课

YTKNetwork提供了哪些功能

相比AFNetworking,YTKNetwork提供了以下更高级的功能:

  • 支持按时间缓存网络请求内容
  • 支持按版本号缓存网络请求内容
  • 支持统一设置服务器和CDN的地址
  • 支持检查返回JSON内容的合法性
  • 支持文件的断点续传
  • 支持blockdelegate两种模式的回调方式
  • 支持批量的网络请求发送,并统一设置它们的回调(实现在YTKBatchRequest类中)
  • 支持方便地设置有相互依赖的网络请求的发送,例如:发送请求A,根据请求A的结果,选择性的发送请求B和C,再根据B和C的结果,选择性的发送请求D。(实现在YTKChainRequest类中)
  • 支持网络请求URL的filter,可以统一为网络请求加上一些参数,或者修改一些路径。
  • 定义了一套插件机制,可以很方便地为YTKRequest增加功能。猿题库官方现在提供了一个插件,可以在某些网络请求发起时,在界面上显示"正在加载"的HUD。

哪些项目适合使用YTKNetwork

YTKNetwork适合稍微复杂一些的项目,不适合个人的小项目。

如果你的项目中需要缓存网络请求、管理多个网络请求之间的依赖、希望检查服务器返回的JSON是否合法,那么YTKRequest能给你带来很大的帮助。如果你缓存的网络请求内容需要依赖特定版本号过期,那么YTKRequest就能发挥出它最大的优势。

YTKNetwork的基本**

YTKNetwork的基本的**是把每一个网络请求封装成对象。所以使用YTKNetwork,你的每一个请求都需要继承YTKRequest类,通过覆盖父类的一些方法来构造指定的网络请求。

把每一个网络请求封装成对象其实是使用了设计模式中的Command模式,它有以下好处:

  • 将网络请求与具体的第三方库依赖隔离,方便以后更换底层的网络库。实际上YTKRequest最初是基于ASIHttpRequest的,我们只花了两天,就很轻松地切换到了AFNetworking。
  • 方便在基类中处理公共逻辑,例如猿题库的数据版本号信息就统一在基类中处理。
  • 方便在基类中处理缓存逻辑,以及其它一些公共逻辑。
  • 方便做对象的持久化。

当然,如果说它有什么不好,那就是如果你的工程非常简单,这么写会显得没有直接用AFNetworking将请求逻辑写在Controller中方便,所以YTKRequest并不合适特别简单的项目。

相关的使用教程和Demo

我们会尽快提供。

作者

YTKNetwork的主要作者是:tangqiaoboylancymaojj

开源协议

MIT开源协议

ytknetwork's People

Contributors

lancy avatar tangqiaoboy avatar

Watchers

James Cloos avatar Beihaozhang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.