关于前后端数据对接问题,谢谢
我想问下大家,你们平时一般后台给前端传递数据的时候,同一类的数据,要以不同格式展示
1.是由后端处理好了传给前台(前端要一种数据格式,后台就得去相应写一套)
2.还是说后台只传给前台一套数据格式,至于怎么去用,由前端自己去解析
例如下面的例子,第一种格式是在列表展现的时候用的,第二种格式是在统计报表的时候用的
列表数据格式
[
{
"id": 1,
"name": "zhangsan",
"money": 1000
},
{
"id": 2,
"name": "lisi",
"money": 2000
},
{
"id": 3,
"name": "wangwu",
"money": 3000
}
]
统计图数据格式
{
"names": [
"zhangsan",
"lisi",
"wangwu"
],
"money": [
1000,
2000,
3000
]
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
先提供一点非常优秀的 restful 资源,这些资料有详细讲到
url/error codes/response
的设计,包括错误码与http status code
的对应,都有比较详细的资料。REST API Tutorial
REST API Best Practices PDF
RESTful 接口返回值
response
应该设计为统一格式,就像楼主上面的设计其实是有很大问题的,在实际场景中使用会很复杂,因为你只考虑到了正确
场景,如果是错误
场景应该怎么办?这个时候是不是同一个接口会返回多种不同的数据格式接口使用方使用时就会非常不便。code – contains the HTTP response status code as an integer.
status – contains the text: “success”, “fail”, or “error”. Where “fail” is for HTTP status response values from 500-599, “error” is for statuses 400-499, and “success” is for everything else (e.g. 1XX, 2XX and 3XX responses).
message – only used for “fail” and “error” statuses to contain the error message. For internationalization (i18n) purposes, this could contain a message number or code, either alone or contained within delimiters.
data – that contains the response body. In the case of “error” or “fail” statuses, this contains the cause, or exception name.
大概的设计就是有
code/status/message/data
4个规范属性。返回结果示例:
成功:
失败:
为了api的后期好维护,同一种数据来源,不同数据结构的,都是前端去做
要不然后端api维护超级难,api接口会一直修改
我做后端都是把接口开放出来,只返回固定一种数据结构,你可以指定返回哪些字段,但是数据格式是不能变的。
要不然前端需要显示多个页面,有不同数据结构,后端就需要开发多个api对应这样子会累死后端的。
最好用restful来做后端api规范
PS:你这ID我看到一次就感叹一次。
楼主这ID我也是醉了
从例子上来讲应该由你定义返回的数据结构
backend for frontend
数据格式这是对前后端传输内容的一种编码,只要这个编码能够准确的描述出传输内容,这个编码(数据格式)就可以了。除非描述内容改变,否则平时不应修改数据格式。
像LZ的那个例子,是前端显示的问题。无论是列表还是图表,数据都有了(而且数据描述内容没有发生变化),所以,为了列表和图表修改数据格式是在前端进行的。
一打开邀请,吓得我鼠躯一震...根据楼主的例子,我的理解是:数据拿到了,用列表还是用表格,这种数据的展示方式是我们前端根据客户需求来实现的,也就是说,从工作流程上,应该是后台给了你数据,你拿到数据后,在对数据进行裁剪整理,再做展示的。也就是说,楼主的第二种说法,我个人比赞同的,后台直接给你相应的数据,可能就是直接 data=‘1,zhangshan,1000’,然后我们再得分明别类给展示出来arr=[id:1,name:"zhangshan",price:1000];
不能武断地说数据到底由谁来处理,要根据实际情况而定。一般而言都是后台来处理数据,前端只是做简单的显示。这是最理想的情况,毕竟浏览器的运算能力是有限的,大部分逻辑都放浏览器来处理,肯定是不合理的。但有的时候,数据量没多少而逻辑又不复杂,浏览器完全可以胜任,就没必要由服务端再给出一个接口来处理。就说统计这个,如果数据是按月算的柱形图,统计为期一年,那浏览器很容易就做到了,没必要麻烦后台了。但是按天算,比如股票统计,上百只股票,即使只统计一个月的走势,对浏览器来说也可能是很大的压力。所以还是具体情况具体分析,在销售的数据量基础上给出一定的增量做个简单的判断,基本没有问题了。