REST API - DTO或不是?我目前正在為一個項目創(chuàng)建一個REST-API,并且正在閱讀關(guān)于最佳實踐的文章。許多人似乎反對DTO,只是暴露域模型,而其他人似乎認為DTO(或用戶模型或任何你想稱之為的)是不好的做法。就個人而言,我認為這篇文章很有意義。但是,我也理解DTO的缺點,包括所有額外的映射代碼,可能與其DTO對應(yīng)物100%相同的域模型等等。我們的API主要是為了讓其他客戶端可以使用數(shù)據(jù)而創(chuàng)建的,但是如果我們做得對,我們也希望盡可能將它用于我們自己的Web GUI。問題是我們可能不希望將所有域數(shù)據(jù)公開給其他客戶端用戶。大部分數(shù)據(jù)只在我們自己的Web應(yīng)用程序中才有意義。此外,我們可能不希望在所有方案中公開有關(guān)對象的所有數(shù)據(jù),尤其是與其他對象的關(guān)系等。例如,如果我們公開特定對象的列表,我們不一定要暴露整個對象層次結(jié)構(gòu); 這樣對象的孩子就不會暴露,但可以通過鏈接(hateoas)發(fā)現(xiàn)。我該如何解決這個問題?我正在考慮在我們的域模型上使用Jackson mixins來控制在給定不同場景的情況下會暴露哪些數(shù)據(jù)。或者我們應(yīng)該一直使用DTO - 即使考慮到它的缺點和爭議?
3 回答

溫溫醬
TA貢獻1752條經(jīng)驗 獲得超4個贊
當您的API是公開的并且您必須支持多個版本時,您必須使用DTO。
另一方面,如果它是私有API并且您同時控制客戶端和服務(wù)器,我傾向于跳過DTO并直接暴露域模型。
添加回答
舉報
0/150
提交
取消