我正在嘗試使用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,不多也不少? –