数据接口

科技工作者之家 2020-11-17

数据接口就是进行数据传输时向数据连接线输出数据的接口。 无线解码器常见接口为RS-232端口。RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口。

简介是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准规定采用一个25个脚的DB25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。

增加接口的时机一般一个页面不存在二次请求的需求时,使用一个接口,像一般的详情页,个人信息页等;页面单一功能又需要二次请求的,像带分页功能的列表页,使用一个接口;页面含多个功能,其中有一个需要二次请求的,则需要定义多个接口了,比如个人信息页下带一个待办事项的列表,又支持分页,那如果一个接口返回全部信息的话,以后每次翻页都要刷新个人信息内容,这样就造成了不必要的信息传递。1

参数与返回值先说参数,笔者目前的做法是一般查询采用URL传参,增改采用POST传递JSON字符串提交数据,删除同样使用POST方式。再说返回值,我们在项目中所有接口统一返回JOSN数据,并且约定一个格式,比如这个JSON对象含三个Key,分别是data,msg和status,分别代表了返回的数据,data可能是对象或者数组,请求反馈信息和反馈状态码,这样就不用每个接口都说明一遍了。再谈一些细节,在高级语言中,数据有多种类型,String,Int,DateTime等等。而序列化为JSON后,全部变为字符串,这个时候没有给值的字段就需要注意一下,像值类型,为可空时,序列化后值直接是null表示,没有引号;为不可空时,值为默认值,同样没有引号,而DateTime则带引号,"0001-01-01T00:00:00";而像引用类型String,无值时,序列化后也变成null,而不是空串"",要想用空串""表示,必须给一个默认值,如String.Empty,说这点是因为当时iOS告诉我说字段值返回null时,他们那边报错。还有一种情况是之前遇到过的,就是数值类型的精度问题,当时接口返回一个价格字段,服务器端当然用decimal类型,并且保留两位小数,但是iOS端接收到的值小数点后却多出很多位,而Android没有任何问题,最后只好在序列化前先转成字符串类型。其它需要包含小数位的数值类型当小数点后全是0时,序列化变为整型,这种情况同样需要先转为字符串再序列化。关于DateTime类型,在作为增改参数接收时,就是反序列化后要插入到数据库,如果你正好使用了Sql Server,又使用了DateTime类型,请注意它的范围是1753-01-01 00:00:00 到9999-12-31 23:59:59,而空串转为时间为"0001-01-01 00:00:00",会报异常。2

本词条内容贡献者为:

杜强 - 高级工程师 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。