亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

REST API - DTO或不是?

REST API - DTO或不是?

浮云間 2019-08-09 16:17:44
REST API - DTO或不是?我目前正在為一個項目創建一個REST-API,并且正在閱讀關于最佳實踐的文章。許多人似乎反對DTO,只是暴露域模型,而其他人似乎認為DTO(或用戶模型或任何你想稱之為的)是不好的做法。就個人而言,我認為這篇文章很有意義。但是,我也理解DTO的缺點,包括所有額外的映射代碼,可能與其DTO對應物100%相同的域模型等等。我們的API主要是為了讓其他客戶端可以使用數據而創建的,但是如果我們做得對,我們也希望盡可能將它用于我們自己的Web GUI。問題是我們可能不希望將所有域數據公開給其他客戶端用戶。大部分數據只在我們自己的Web應用程序中才有意義。此外,我們可能不希望在所有方案中公開有關對象的所有數據,尤其是與其他對象的關系等。例如,如果我們公開特定對象的列表,我們不一定要暴露整個對象層次結構; 這樣對象的孩子就不會暴露,但可以通過鏈接(hateoas)發現。我該如何解決這個問題?我正在考慮在我們的域模型上使用Jackson mixins來控制在給定不同場景的情況下會暴露哪些數據?;蛘呶覀儜撘恢笔褂肈TO - 即使考慮到它的缺點和爭議?
查看完整描述

3 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

當您的API是公開的并且您必須支持多個版本時,您必須使用DTO。

另一方面,如果它是私有API并且您同時控制客戶端和服務器,我傾向于跳過DTO并直接暴露域模型。


查看完整回答
反對 回復 2019-08-09
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

我傾向于使用DTO。

我不喜歡這些缺點,但似乎其他選擇更糟糕:

域對象的展示可能會導致安全問題和數據泄漏。杰克遜的注釋似乎可以解決這個問題,但是很容易犯錯誤并暴露不應該暴露的數據。在設計DTO課程時,犯這樣的錯誤要困難得多。

另一方面,DTO方法的缺點可以通過對象映射和Lombok等較少的樣板來減少。


查看完整回答
反對 回復 2019-08-09
  • 3 回答
  • 0 關注
  • 1017 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號