关于将实体转换为DTO,我有一个问题。我已经读过,在休息应用程序中将实体转换为DTO是好的,这样它就可以隐藏你的实体数据。 例如 如果我有一个实体用户,并且有两个休息端点--GET和PUT。 GET获取数据,PUT更新数据。现在,如果我不将实体转换为DTO,我将暴露我的实体实例,有人可以使用PUT方法实例并更新用户数据。
但是我的问题是,如果我在使用GET和PUT方法(大多数开发人员这样做)时使用相同的DTO类来转换数据,也会发生这种情况。那么如何将实体转换为DTO可以提高安全性。
User.java
@Entity
@Table
public class User{
private int id;
private int name;
private String password;
}
请给你宝贵的意见,以澄清我的怀疑。谢谢!
答案 0 :(得分:0)
您明确定义了应用程序外围设备可用的属性。我不确定这会增加安全性,但它可以保护您免受不必要的行为。如果您通过Jackson自动将REST主体转换为JSON,则会暴露您实体的每个获取者。因此,如果您添加getXXX方法来评估域中的某些内容,您可能会不情愿地将其暴露给外部世界。
例如,您可能不希望公开哪些授权可用于您的用户或用户的密码。
我喜欢使用Adapter Pattern进行REST / JMS交互。
答案 1 :(得分:0)
关注点分离。
GET:在您的示例中,您不会将ID返回给客户端吗?
PUT:你不会填充id。