API的新DTO或字段选择器?

时间:2017-10-04 09:17:06

标签: rest asp.net-web-api

我正在开发新的API,但我仍然坚持选择启用Projection支持。

我的实体User包含一些属性,也有一些关系。

什么应该是API的首选方法?

Approach1

myApi.com/User/Fields="Id,Name,Email"

它返回我的UserDTO,只填充IdNameEmail,其余属性为null(我可以在序列化JSON之前进一步忽略null,以便通过线)

Approach2

myApi.com/User/GetCustomPropertiesABC"

它返回我的UserCustomABCDTO。此模型仅包含IdNameEmail的三个属性。

我的问题

我个人认为方法1给API提供了更多的重用商,每次方法2中所需的新选择器都需要创建一个新的DTO,但是根据REST原则标准是什么?

1 个答案:

答案 0 :(得分:0)

嗯,你可以使用ODATA,它实际上是完美的:http://www.odata.org/

或者,您可以创建一个端点,接受类似于方法1的请求并返回动态。通过这种方式,您不必担心创建DTO,只需创建一个新的动态对象,添加所需的任何属性,然后返回。

这可以使返回的实体保持较小,因为它可以避免谁知道有多少null或空属性并没有真正添加任何有用的东西。