优雅的网络请求

 

概述

今天基于retrofit+kotlin来封装更优雅的网络的请求,retrofit本身就是对okhttp的一次表层封装,提供了更高的可扩展性。并且采用动态代理的方式,将真正的实现封装起来,对于用户而言只需要定义信息接口,而不必了解不需要的细节,总的来说降低的复杂度,提高了可读性、并且更加的灵活。

 

传统的retrofit

retrofit提供了同步和异步请求的方法,一般情况下我们会使用它提供的异步API,如果使用同步方法的话,我们需要自己维护线程切换,增加了使用成本。

 

示例

首先定义了接口,用户不用写任何的实现就可以直接使用。下面是使用代码:

 

说明

事实上,以上代码已经足够优雅了,但是用户仍然关注到了不需要了解的类,比如Retrofit、Call、CallBack接口、Response。如下标记:

前面说过,retrofit的一大成功就是屏蔽了请求的实现细节,这样可以让用户更关注于业务本身。思考下,对于这个业务开发者来说,他需要关注哪些东西呢?

答案是:CSDNRequestInterface

仅仅这个接口是于业务相关了,其他所有类都是帮助发起请求的,所以为了提高它的优雅性,我们需要想办法将其他多余的类屏蔽起来。

 

优雅的方式

不幸的是,java似乎无能为力,我曾经尝试过很多次,都没实现一个更优雅的方案。幸运的是,我发现了kotlin。这确实是门优雅的语言,让人欲罢不能。

 

示例

 

说明

好吧,用到了kotlin的协程、类扩展还有高级范型特性。不过效果还是挺不错的,样板代码减少了很多,异步代码写成了同步的样子,之前说的类全部屏蔽了起来。

 

实现

 

总结

为了示例的简单,省略了很多判断条件,实际的生产环境需要感知到异常,并且作出处理。这边只是提供一种思路,大家可以在这个基础上进行完善,目前自己的项目中使用的是这种方式,没出现什么问题,因为项目涉及脱敏就不放出来了。

猜你喜欢

转载自blog.csdn.net/long8313002/article/details/108406401