提升接口可扩展性的一点小技巧

现实情况

接口涉及到三个方面:

  • 服务器端,简称s;
  • 自己封装的浏览器,简称b;
  • 前端js,简称j。

b启动之后,会定时轮询s,获取相应的信息,并把其中的一部分反馈给j。开始时对s的返回值设计如下:

1
2
3
4
5
6
7
{
status: 0, // 标识成功还是失败(0表示成功,非0表示失败)
data: { // 打印数据
photo: 123, // 【整型】照片ID
preview: 'http://...', // 【字符串】预览图地址:给前端预览使用
}
}

其中,preview字段是缩略图的地址,b在接收到之后,需要传递给前端的js去展示。理想情况下,这可以运行得很好,但是b端一旦固定下来,是很难改的,如果我们需要传更多的数据给j端怎么办?

解决方式

j端可扩展性差的原因是什么?
是因为j对preview字段进行了解析,如果j端不解析,那就可以把很多东西添加到里面了。所以协议改成了以下的形式:

1
2
3
4
5
6
7
8
9
10
11
12
{
status: 0, // 标识成功还是失败(0表示成功,非0表示失败)
data: { // 打印数据
photo: 123, // 【整型】照片ID
// 打印机端不需要处理里面的数据,只需要把data的整个结构传给前端JS即可。
data: {
number: 12, // 【新增】【整型】当日的打印序号
preview: 'http://...', // 【字符串】预览图地址:给前端预览使用
}
}
}