目前,我在我的控制器中使用 DTO 对象,并将它们与类验证器插件配对以解析/验证它们。问题是,我想为某些 DTO 参数分配默认值,但这些值应该来自配置。我需要一些优雅的方法来将这些默认值注入 DTO,并让这些默认值自动填充到各个端点的 swagger 元信息中(我正在使用 nest swagger 插件为我自动应用装饰器)。为了达到预期的结果,我看到了 2 个解决方案,这两个解决方案都需要一些不必要的妥协。
解决方案 1:将配置值注入控制器本身,并在路由处理程序中解析 DTO 后,将参数和 DTO 传递给将在 DTO 上应用它们的方法。但是,为了在 swagger 中记录默认值,我应该手动将“@ApiQuery”属性放在默认值的处理程序上。首先,在这种情况下,我同时使用 DTO 和查询装饰器来专门用于招摇,而且我不确定这是否会起作用。简而言之,这完全是一团糟,我更愿意避免这种“解决方案”。
解决方案 2:完全跳过 DTO 方法并使用单独的查询参数。我可以通过将配置注入控制器来使用默认管道应用默认值。但是,我需要为每个参数应用验证规则,或者无论如何创建一个 DTO,我可以在其上应用验证规则并从查询参数手动构造它。此外,我需要手动记录所有参数,以便招摇过市。
有更好的解决方案吗?