背景
昨天领导开会,讨论两个接口之间参数问题,这个参数涉及文件传递的需求;其中一句话引起了我的思考:“参数怎么定义?能不能定义成字符流?”
当时我沉思了一下,懵的 没明白她的意思
我理解的比如http请求传输的数据无非是字节电信号嘛,肯定是向把传输数据最小化最好。
字符串,数字,字节数组这些基础类型肯定是支持的,其他类型的参数无非是:
1、应用先将数据类型序列化,然后再依赖底层传输协议在网络上传输
2、接收方将获得数据进行反序列化后,生成自定义对象
3、通过对象解析数据
对于输入输出流的理解
网上各种举例的说法
网上很多说法,大部分解释流都会举一个水缸与水的例子(或者其他类似的比喻);
这样解释我觉得让问题复杂化了,是一种自下而上的理解途径,对于初学者要把例子中的各个角色对应起来还是比较打脑壳;
我的理解
我理解其实很简单,两点(1、流是什么 2、其有什么功能特性):
- 流不是真实数据,而是一类工具(应用与数据源间操作的工具)
- 流这类工具提供读取或者写入数据的特性
从这两个角度(自上而下的整体角度)去理解流的话,就很清晰了;看下图
上面的源其实可以理解成我们的应用或者操作系统内核
摘自:https://www.zhihu.com/question/38075755
接口
回头想想这个接口,方向应该是在传输数据大小、速率等方向进行深度设计;
至于接收方数据的获取那肯定是离不开流,因为java里的流就是干这个事情的;
我们接口设计成直接操作流还是直接操作数据,这要看我们使用的框架封装的程度
over~