项目中,看到别人,直接把dto,写上swagger注释,直接返回前端。那么思考一下,为什么不建议这么做。
为什么会存在vo。而不是直接把dto返回给前端。
1、从开发过程讲,前后端首先会以vo和param作为返回、传参的协议的定义,再定义协议之前,都没有,实际的业务逻辑的处理,也就不会存在dto。
2、从项目的整体考虑,如果,把dto作为传给前端的对象,那么service层返回dto,service层的所有的方法不一定,都是public方法,也有private方法,如果private方法也返回dto,那么也就是说,
有些dto不是提供给前端的,这样依赖,dto有些不是给前端的,有些是给前端的,这样就会乱,没有了隔离性,
3、从字段的修改来说,service层的方法,是可以共用的,一个service方法返回的dto,可能会被很多个controlller方法使用到,即使目前不会,将来也可能会,这种情况下,如果直接把dto提供给前端,
将会导致耦合性非常大,一旦,一个接口的需求变了,修改了dto,增加了一个字段,将会导致接口直接把这个新增的字段返回给了前端,导致(接口输出数据多余,和不安全性)。同理,如果由于某个需求,把dto展示给前端的接口
说,需要删除某一个字段,那么,因为这个dto被很多接口引用,一删除就会导致出问题。
所以,总整体性结构而言:vo是必须存在的,不能把dto直接返回给前端。
总之:
高内聚 弱耦合
网友评论