Spring 外部客户端的 DTO 引导数
Spring Boot number of DTOs for external clients
我有 2 个外部客户端,客户端 A 和客户端 B,它们需要存储在 MongoDB 中的订单数据,我正在尝试了解构建 Spring 引导项目的正确方法以提供这两个客户需要什么。他们都需要类似的数据,除了客户 A 想要更多的数据。
我的想法:
- 创建 2 个控制器,一个用于客户端 A 和客户端 B。客户端 A 控制器将 return OrderDTO_A,客户端 B 控制器将 return OrderDTO_B。
- 创建 2 个服务,它们都注入订单存储库以获取订单数据
- 在每个服务中,我将使用存储库调用订单数据,将结果映射到适当的 DTO,然后 return 将 DTO 映射到控制器。
这听起来对吗?这对我来说感觉很奇怪,因为我有我的 Order 域模型被保存到数据库中。我有一套客户端A的DTO模型,我有一套客户端B的DTO模型。
如果我有客户 C 怎么办?基于此,我会为客户端 C 设置另一组 DTO。这样对吗?只是感觉不对,因为我有很多看起来很相似的DTO,但是为特定的客户端增加或减少了一些字段。
鉴于客户端 A 只需要多一点数据,我不会采用 Controller/Service 每个客户端方法。坚持提供客户 A 需要的数据。客户端B可以忽略他们不需要的部分数据。
如果因为数据量大而不希望这样做,那么您可以考虑提供一个 GraphQL 端点。使用 GraphQL,由客户端决定它想要接收哪些属性。
另一种方法可能是 JSON 视图,但我会尽可能避免使用它,因为它很容易变得很难维护。
域的边界可以帮助我们判断是否需要新的DTO。
如果little bit more data
客户端A想要属于客户端B已经使用的同一个域,我们应该重用同一个DTO,而不是创建一个新的。 DTO 是域对象的组合,以适应不同的用例。
查看这篇文章关于使用 DTO 时 common mistake 的建议,我发现它很有帮助。干杯。
我有 2 个外部客户端,客户端 A 和客户端 B,它们需要存储在 MongoDB 中的订单数据,我正在尝试了解构建 Spring 引导项目的正确方法以提供这两个客户需要什么。他们都需要类似的数据,除了客户 A 想要更多的数据。
我的想法:
- 创建 2 个控制器,一个用于客户端 A 和客户端 B。客户端 A 控制器将 return OrderDTO_A,客户端 B 控制器将 return OrderDTO_B。
- 创建 2 个服务,它们都注入订单存储库以获取订单数据
- 在每个服务中,我将使用存储库调用订单数据,将结果映射到适当的 DTO,然后 return 将 DTO 映射到控制器。
这听起来对吗?这对我来说感觉很奇怪,因为我有我的 Order 域模型被保存到数据库中。我有一套客户端A的DTO模型,我有一套客户端B的DTO模型。
如果我有客户 C 怎么办?基于此,我会为客户端 C 设置另一组 DTO。这样对吗?只是感觉不对,因为我有很多看起来很相似的DTO,但是为特定的客户端增加或减少了一些字段。
鉴于客户端 A 只需要多一点数据,我不会采用 Controller/Service 每个客户端方法。坚持提供客户 A 需要的数据。客户端B可以忽略他们不需要的部分数据。
如果因为数据量大而不希望这样做,那么您可以考虑提供一个 GraphQL 端点。使用 GraphQL,由客户端决定它想要接收哪些属性。
另一种方法可能是 JSON 视图,但我会尽可能避免使用它,因为它很容易变得很难维护。
域的边界可以帮助我们判断是否需要新的DTO。
如果little bit more data
客户端A想要属于客户端B已经使用的同一个域,我们应该重用同一个DTO,而不是创建一个新的。 DTO 是域对象的组合,以适应不同的用例。
查看这篇文章关于使用 DTO 时 common mistake 的建议,我发现它很有帮助。干杯。