DTO和API资源之间有什么区别

时间:2017-09-12 02:16:34

标签: rest asp.net-core asp.net-core-webapi

我正在阅读一些有关如何创建RESTful API的ASP.NET Core教程和文章。对我来说,似乎在较新的演示/文章中,人们将DTO称为API资源。这两个是不同名称的概念,还是两者之间有区别?是否有标准/惯例或仅仅是基于意见?

3 个答案:

答案 0 :(得分:1)

在REST或Web API中,资源是方法运行的对象。例如,获取联系人列表,按ID获取特定联系人,更新联系人,删除联系人 - 联系人是资源。

DTO(数据传输对象)是实现这种资源的一种方式。它通常在API修改关系数据库中的数据时使用。人们已经发现将Contact数据库实体通过Web API直接返回给客户端的缺陷。因此,他们将联系实体映射到联系人DTO。

因此,Web API资源可能是DTO,但并非必须如此。那取决于你的情况。想象一下,您有一个Web API来获取/设置设备上的时间。您不需要为此创建DTO,您只需使用表示日期的字符串即可。在这种情况下,API的资源将是一个字符串。

答案 1 :(得分:0)

它们是不同的概念,但有点类似

DTO是适合传递给视图/客户端和从视图/客户端传递的对象。目的是删除您不想要的信息,将对象结构展平为更多可消费形式,或者用其他各种东西装饰您的数据。它们位于您的数据模型和您想要提供数据的任何内容之间。

REST是一种基于高度约定的方法,可为您的CRUD类型操作的数据提供API。您的REST API可能使用与原始数据模型完全不同的DTO,但通常在教程中,API是具有身份验证/授权检查的数据库上的薄层。

答案 2 :(得分:0)

如果我理解正确的话,我认为问题在于是否有特殊的客户面向类/对象后缀为'资源' (例如,EmployeeResource),并且具有不同的"形状"来自域模型(在这种情况下,Employee),与具有DTO的相同。 我相信答案是肯定的。