《果然新鲜》电商项目(22)- DTO接口细分

网友投稿 304 2022-09-24

《果然新鲜》电商项目(22)- DTO接口细分

文章目录

​​引言​​​​1.问题引入​​​​2.何为VO、DO、DTO?​​​​3.项目改造​​

​​3.1 会员微服务改造​​

​​3.1.1 新增VO、DO​​​​3.1.2 替换之前的实体类​​

​​4. 测试​​​​5.总结​​

引言

在上一节​​《果然新鲜电商项目(21)- 会员注册功能》​​,主要讲解如何实现会员注册功能,目的主要还是讲解Feign客户端的调用。

本文主要讲解微服务接口的安全问题,使用DTO如何细分接口中的实体。

1.问题引入

是否想过,请求的实体类是和数据库的实体类是一模一样的,这样会不会造成安全的问题?譬如我需要增加一个字段​​isVip​​​(表示是否为会员),那请求者如果是非会员,通过抓包,设置为​​true​​,那岂不是会造成数据安全的问题么?其实,我们需要改造一下请求的实体内容,让其与数据库对应的实体类有所区别。

2.何为VO、DO、DTO?

在日常的项目开发中:

VO对应于页面上需要显示的数据(表单)DO对应于数据库中存储的数据(数据表)DTO对应于除二者之外需要进行接口形式传递的数据。在传统的项目中,一般不使用DTO和VO的原因无非以下几个:

项目太小,对于一种业务实体,封装成一个DO就够了。

并不熟悉DTO、VO,更不知道他们之间的区别。了解DO\DTO\VO之间的区别,但是懒得用。直接进入主题,修改我们的项目。

3.项目改造

package com.guoranxinxian.util;public class BeanUtils { /** * dot 转换为Do 工具类 * * @param dtoEntity * @param doClass * @return */ public static Do dtoToDo(Object dtoEntity, Class doClass) { // 判断dto是否为空! if (dtoEntity == null) { return null; } // 判断DoClass 是否为空 if (doClass == null) { return null; } try { Do newInstance = doClass.newInstance(); org.springframework.beans.BeanUtils.copyProperties(dtoEntity, newInstance); // Dto转换Do return newInstance; } catch (Exception e) { return null; } } /** * do 转换为Dto 工具类 * * @param dtoClass * @param doEntity * @return */ public static Dto doToDto(Object doEntity, Class dtoClass) { // 判断dto是否为空! if (doEntity == null) { return null; } // 判断DoClass 是否为空 if (dtoClass == null) { return null; } try { Dto newInstance = dtoClass.newInstance(); org.springframework.beans.BeanUtils.copyProperties(doEntity, newInstance); // Dto转换Do return newInstance; } catch (Exception e) { return null; } } // 后面集合类型带封装}

3.1 会员微服务改造

3.1.1 新增VO、DO

3.修改​​guoranxinxian-shop-api-member-entity中​​​的​​UserEntity​​​->​​UserOutDTO​​​,并把​​UserOutDTO​​复制到第一步的“输出参数”包里,改造内容如下:

4.在会员服务​​guoranxinxian-shop-service-member​​​,新建​​UserDo​​(DO实体类)

3.1.2 替换之前的实体类

1.替换注册接口的实体类

过程大致同上!

4. 测试

5.总结

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:蚂蚁集团上市后,马云或超越巴菲特和马斯克成为世界前五大富豪!
下一篇:ReactNative WebView 加载网址出错:net::ERR_CLEARTEXT_NOT_PERMITTED
相关文章

 发表评论

暂时没有评论,来抢沙发吧~