我正在尝试使用Spring MVC构建一个RESTful Web服务。我正在使用Jackson的fasterxml JSON解析器进行客户端和服务器端之间的通信。从RESTful Web服务发送JSON时,DTO是否必需?
我想确定是否将DTO(数据传输对象)实现到我的RESTful API中。我目前正在利用Jackson的@JsonProperty(access = Access.WRITE_ONLY)
和@JsonIgnore
注释来防止敏感字段(如密码)发送到客户端。
所以,使用JSON当用于在客户端和服务器之间的通信从所述响应身体省略敏感字段时是DTO的必要的或有注释@JsonIgnore
和@JsonProperty
足以防止敏感数据泄漏?
因为我正在使用Jackson的'@ JsonIgnore',所以使用DTO的目的是什么?例如,假设我有一个'id','username'和'password'的User'对象。我将'@ JsonIgnore'添加到密码字段,这样当用户登录时,我只返回'id'和'username',因为当对象被序列化时'password'字段被忽略。这种方法有没有安全漏洞?在给定的例子中,我需要一个DTO吗? –
这会起作用,但在架构上它不是首选。 稍后您将需要创建复杂的API,如果坚持暴露实体,您将混合实体和瞬态DTO,并且您的代码库将被污染。 –
因此,基本上,对于每个新的信息请求,我需要一个DTO,其中包含与映射实体中的字段相同的字段的子集?例如,如果我创建了一个注册表单,那么我需要一个UserDTO,它包含表单中的字段和简单的getter和setter,不多也不少? –