ASP.NET Web API 2视图模型?

5

我是ASP.NET Web API的新手(对API一窍不通)。我的问题是,是否有类似于ASP.NET MVC中的ViewModels的东西(我想即使存在这样的东西,它们在API中也不会被称为ViewModels),还是必须使用来自我的DataAccess层的数据库模型?

3个回答

4
我的问题是是否有类似于ViewModels的东西。
是的,就像在MVC中一样,有一个名为ViewModels的东西。名称并不重要,它被称为许多名称,如DataModel或Model或DTO。但实质上它是一个没有任何状态的数据传输对象(DTO)。
同样,您应该为相应的实体拥有单独的视图模型,并应在模型对象中包含数据验证逻辑。这还可以在实际实体上添加一层抽象,以确定您要将哪些特定数据传输到客户端。

很好的观点,也许是OP正在寻找的答案。ViewModel实际上只是暴露给用户的数据片段的另一个名称。 - AJ X.
@john,如你所提到的,那并不重要。 - Rahul

1
你可以在WebAPI中使用视图模型。你可以从API方法返回任何对象。
事实上,我建议在API场景中特别返回视图模型,因为你不希望序列化与数据访问对象附加的任何额外属性,特别是框架生成的属性。对于API响应,使用简单的POCOs可以让你完全控制客户端接收到的数据。

2
@john:如果你愿意的话,当然可以。我通常对“视图模型”这个术语感到舒适,因为虽然在ASP.NET MVC框架的类定义中它不是一个“视图”,但在模式定义中它确实是一个“视图”,因为它最终是应用程序向消费者公开的内容。最终术语取决于你和你的团队/领域等等。只要保持清晰和一致,就没问题。 - David

0
这里的选择取决于您的设计和相对应用程序的复杂性。在领域模型和业务模型之间进行映射的开发成本很小。然而,我建议为您的API层创建一个视图模型,原因如下:
  • 它为您的API定义了明确的合同
  • 如果您的领域模型发生变化,不会影响您的用户
  • 您可以在不影响领域层的情况下对API进行版本控制

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接