我目前正在为一个项目创建REST-API,并且一直在阅读有关最佳实践的文章。许多人似乎反对DTO并只是公开域模型,而其他人似乎认为DTO(或用户模型或任何您想称呼的东西)是不好的做法。我个人认为这篇文章很有道理。
但是,我还了解了所有其他映射代码,域模型可能与其DTO对应对象100%相同的DTO的缺点。
我们的API主要是为了使其他客户端可以使用数据而创建的,但是,如果操作正确,我们还将尽可能地将其用于我们自己的Web GUI。
问题是我们可能不想将所有域数据公开给其他客户端用户。许多数据仅在我们自己的Web应用程序中才有意义。另外,我们可能不希望在所有情况下都公开有关某个对象的所有数据,尤其是与其他对象的关系等等。例如,如果我们公开一个特定对象的列表,则我们不一定要公开整个对象层次结构。这样就不会暴露对象的子对象,而是可以通过链接(阴影)来发现它。
我应该如何解决这个问题?我正在考虑在我们的域模型上使用Jackson混合来控制在不同情况下将公开哪些数据。还是考虑到DTO的缺点和争议,我们是否应该一路使用DTO?