我们正在使用Spring Boot创建rest api。我们的项目中有三层(存储库,服务和控制器)。
假设我的控制器中有GetUser api,它返回UserDTO对象。
@GetMapping
public UserDTO getUser() {
return userService.getUser();
}
userService.getUser()
是返回UserDTO对象还是返回User对象并且它在控制器中转换为UserDTO对象?哪一个更好的方法?
不久,域对象到DTO对象转换,应该在服务层还是控制器层完成?
我认为没有“更好的方法”将域对象转换为DTO对象,这是一个品味问题。在我的项目中,我将域对象转换为服务层中的DTO,作为我的“业务逻辑”的一部分。因此,您只能将域对象的可访问性降低到服务层。此外,我想减少控制器内部的“逻辑”,因为它们是应用程序层的一部分。
PS:如果您正在寻找几种将域对象转换为DTO的方法,请查看我最新的Stackoverflow问题之一(How to properly convert domain entities to DTOs while considering scalability & testability)