【问题标题】:Property name of output model API输出模型 API 的属性名称
【发布时间】:2020-03-12 11:44:16
【问题描述】:

早安,伙计们,我需要一些建议。 我正在为我的 API 创建输出模板,但我对类的名称感到非常困惑。 例如,我有一个名为 User 的实体。 在输出模型中,我必须返回一个用户列表,但它不能以实体为中心,而是以我为输出创建的另一个模型为中心。 好吧,我不知道我告诉你的最后一堂课是什么名字。 我不能称它为用户,因为它与真实实体冲突。 提示?

【问题讨论】:

标签: c# asp.net class model


【解决方案1】:

您的代码中应该至少有 3 层对象,ViewModel、Dto 和实体。

每个图层应该只能看到它正下方的图层。

因此,您的服务层可以从数据层读取实体,但如果它公开任何对象,它们应该在 Dto 中。

然后,您的表示层(UI/API 等)将从服务层 (DTO) 中读取数据,并将其对象公开为 ViewModel。

在许多情况下,这意味着所有 3 个对象(Entity、Dto 和 ViewModel)都具有相同的重复属性,但这是意料之中的,尤其是在较小或较新的项目中。

这应该可以解决您的命名问题。

数据层:XXXEntity

服务层:XXXDto

表示层:XXXViewModel

这个解释非常简单,你可以用许多不同的方式解决这个问题(例如,你可以使用命名空间而不是类后缀)。

【讨论】:

    【解决方案2】:

    我尝试遵循的指导原则是命名应反映意图 - 而用户仅代表您域中“用户”的概念,而 API 模型旨在成为包含用户信息的 API 有效负载。在你的位置上,我会考虑 UserApiModel 或 UserPayload。

    *作为补充说明,为了我的钱,这里最重要的是一致性——无论你选择什么,现在对你有意义的东西对你(或其他任何人)来说可能不是最直观的维护后面的代码。只要您在所有 API 模型中始终如一地应用您的命名约定,就不必过分强调找到“正确”的模型 - 只需选择第一个看起来足够好的模型,然后继续滚动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      相关资源
      最近更新 更多