后端结果集的设计
由于现在很多企业使用前后端分离的思想,后端为前端提供数据接口。RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。通常而言,后端所有返回的都是由三部分组成,code:状态码,msg:信息,data:返回的数据。
java bean中,我一直用的这种表现方式,并且觉得很恰当。
1 | public class Result() { |
直到今天同事的提醒,思考一番,这的确不是最好的形式。
举个例子,现在有个Person类:
1 | public class Person() { |
在后端程序中,返回根据查询返回一个Person对象:
1 | public Result find(int id) { |
那么前端接收到的json就是这样的:
1 | { |
我们可以这样理解,上面这段json中的data字段其实就是Person类的含义,代表了Person类。如果另外一个接口返回的是一个班级信息,那么这个data是否又变成了“班级”的含义,所以,这个data的含义是会检查变化的。
此外,对于上面这个json,我想加入一个天气的状况——weather:“晴朗”,是不是只能这样:
1 | { |
它是恰当的么?weather属性应该和其它三个属性并列么?不应该,weather应该和person属性并列!
1 | { |
上面的json才是正确的,能让人一眼看明白关系的,并且随意添加字段,data的意义都不会改变,data就是data,再往data中加一个数组,也没有关系。
因此,一个恰当的pojo应当是:
data是一个Map,key是上面的”person”、”weather”这种String类型的字符串,value是真正的值。
1 | public class Result() { |