REST API - DTO 与否?[已关闭]
我目前正在为一个项目创建一个REST-API,并且一直在阅读有关最佳实践的文章。许多人似乎反对DTO,只是简单地公开了领域模型,而另一些人似乎认为DTO(或用户模型或任何你想称之为它的东西)是不好的做法。就个人而言,我认为这篇文章很有意义。
但是,我也了解DTO的缺点,其中包含所有额外的映射代码,域模型可能与DTO对应物100%相同等等。
我们的API主要是为了让其他客户端可以使用数据而创建的,但是如果我们做得对,如果可能的话,我们也希望将其用于我们自己的Web GUI。
问题是,我们可能不希望向其他客户端用户公开所有域数据。大部分数据只有在我们自己的Web应用程序中才有意义。此外,我们可能不希望在所有场景中公开有关对象的所有数据,尤其是与其他对象的关系等。例如,如果我们公开一个特定对象的列表,我们不一定想公开整个对象层次结构;这样物体的子体就不会暴露出来,而是可以通过链接(hateoas)被发现。
我应该如何解决这个问题?我正在考虑在我们的领域模型上使用 Jackson mixins 来控制在不同情况下会公开哪些数据。或者我们是否应该一直使用DTO - 即使考虑到它的缺点和争议?