我正在开发新的API,但我仍然坚持选择启用Projection
支持。
我的实体User
包含一些属性,也有一些关系。
什么应该是API的首选方法?
Approach1
myApi.com/User/Fields="Id,Name,Email"
它返回我的UserDTO
,只填充Id
,Name
,Email
,其余属性为null(我可以在序列化JSON之前进一步忽略null,以便通过线)
Approach2
myApi.com/User/GetCustomPropertiesABC"
它返回我的UserCustomABCDTO
。此模型仅包含Id
,Name
,Email
的三个属性。
我的问题
我个人认为方法1给API提供了更多的重用商,每次方法2中所需的新选择器都需要创建一个新的DTO,但是根据REST原则标准是什么?
答案 0 :(得分:0)
嗯,你可以使用ODATA,它实际上是完美的:http://www.odata.org/
或者,您可以创建一个端点,接受类似于方法1的请求并返回动态。通过这种方式,您不必担心创建DTO,只需创建一个新的动态对象,添加所需的任何属性,然后返回。
这可以使返回的实体保持较小,因为它可以避免谁知道有多少null或空属性并没有真正添加任何有用的东西。