最近要对公司的网络请求框架进行重构,为了打造一款好用强大的网络请求框架,梳理一下网络请求框架的需求。
基本需求
能够正常的进行GET,POST,PUT,DELETE,HEAD,PATCT 等网络请求,能够实现文件的上传下载等功能。这个大多数网络请求都能够实现。
高级需求
1)支持链式网络请求
所谓链式网络请求就是一个请求完了,接着执行下一个网络请求。前一个网络请求开始的前提必须是上一个网络请求正常结束。
2)支持类组队列的网络请求
组队列发送网络请求,一组网络请求,异步发送,可以指定某几个请求是必须成功的请求,只有指定的请求都成功时,才会执行组队列的成功回调;如果指定的任意一个请求失败,那么执行组队列的失败回调。如果没有指定必须成功的请求,那么只要有一个请求成功,那么等到所有的请求执行完,执行组队列的成功回调;如果所有的请求都失败了,那么执行组队列的失败回调。
3)支持启动时的网络请求依赖
支持启动时所有的网络请求都依赖有一个单独的网络请求,或者只链式组合请求,或者类组队列组合网络请求。等到被依赖的网络请求执行完以后才会执行其他的网络请求。多用于app有启动配置的情况。
4)支持网络请求的取消
支持网络请求的取消存在两种情况,第一种情况就是该网络请求在网络请求池中,但是还没有发送网络请求这种情况直接将该网络请求从请求池中移除掉;第二种情况就是该网络请求已经发送,但是还没有收到返回。这种情况移除该网络请求返回时对应的的回调,等到网络请求返回时,不再执行额外的逻辑,节省资源,避免出错。
5)支持mock
支持对网络请求进行mock配置,能够拦截指定的接口,并重定向到指定mock平台或者本地服务器等。实现高效的并行开发。
6)支持资源文件下载优先走cdn
如果项目中的资源文件有配置在cdn,那么可以使用优先使用cdn资源的选项
7)支持网络请求安全策略配置
可以实现网络请求安全策略的配置,可以实现全局配置,也可以实现局部的配置(针对某些特殊的网络请求)
扩展型需求
1)支持请求加签
能够支持不同规格的网络请求加签。甚至是同一个应用中能够支持多套网络请求加签规格。
2)支持接口缓存
能够支持对接口返回数据的缓存,设置缓存时间等,甚至在一个应用中可以支持多套缓存框架,替换某一个时能够做到平稳过渡。
3)支持域名动态更换
支持域名动态更换,肯定也支持域名的全局更换了,避免由于域名问题给app使用带来麻烦。可以支持多套域名更换及系统,能够做到平滑的过渡到某个系统。
4)全局配置网络请求指示器
能够全局的配置网络请求指示器,网络请求开始,自动出现,网络请求结束自动消失,同时对于某一个或者某一些可以配置自定义的网络请求指示器。
5)请求url配置公共参数
支持在发送网络请求前,能够对url添加公共的path,以及公共query参数。既能够实现全局配置,也可以对某些,某个请求单独配置。
更多技术干货文章可以扫描下方二维码: