后端接口中返回了一个 json:
{ "favorite" : [], "most_visited" : [], "recently_visited" : [], "recently_visited_by_day":{} }
注意前三个 key 的值是 array,最后一个是 object
需求是页面需要展示前三个 key 对应的数组的内容,于是前端就对这个字典做了 for 遍历,输出了前三个 key 的内容,而且前端也考虑了,后续如果接口返回了更多的 key,他就直接不用改代码,就兼容了。
我作为后端,我觉得这样不合理,理由是:
前端这种处理,实际上是依赖了 hash 字典 key 的顺序,这不符合常规的习惯。理由是:
- 后端开发在不知道这个依赖的情况下,如果改了 key 的顺序, 前端页面展示顺序就反了。 实际上,确实就遇到 了问题,产品要求改一下三个模块的展示顺序,前端让我接口去改 key 的顺序
- 如果后端在这个接口加了一个字段,本来谁都会认为这个改动不会对前端造成任何影响,实际上就会影响到。
这种非常规的处理,就很容易导致 bug
如果前端确实觉得 for 遍历处理方便,应该和后端沟通,把接口返回格式改为: { "list" :[ [], // 对应 key favorite 的值 [], // 对应 key most_visited 的值 [] // 对应 key recently_visited 的值 ] "recently_visited_by_day":{} }
自从前后端分离 后端不仅要做 curd 还要对付这种前端真是难熬