什么是Web服务中DTO的命名约定

时间:2018-01-02 19:11:35

标签: oop design-patterns naming-conventions design-principles

我正在设计一个宁静的网络服务,我想知道我应该如何命名我的DTO。我可以使用请求和响应等后缀吗?例如,对于addUser服务,将有2个DTO名为:AddUserRequest和AddUserResponse。

3 个答案:

答案 0 :(得分:1)

您的组织是否已经拥有描述您传入的规范用户的架构?如果这就是您正在使用的内容,当然您将使用该架构中的名称。否则,就像对任何类或模式元素一样描述它们。

请注意,由于DTO不包含自己的方法,因此您可能不会使用动作动词为其命名。

但是,请考虑将它们称为AddUserRequest和AddUserResponse,特别是如果该方法需要的信息多于常规用户DTO。这符合接口隔离原则,因为您的接口参数应该专门针对请求本身定制(它不应该要求与请求无关的元素;并且您不应该具有更改请求的函数类型参数,那些应该将其提取到自己的调用中。)AddUserRequest可能包含一个名为User的元素,用于保存特定于用户的数据,另一个元素包含请求中的其他相关数据集,可能是组或访问权限,这类。

答案 1 :(得分:1)

由于它是一个RESTful服务,理想情况下,用户添加/创建请求应该发回201创建的HTTP状态代码,其中userId位于头部标题中且没有响应主体。对于请求,您可以将其命名为UserDetails或UserData,或者仅命名为User。请参阅https://pontus.ullgren.com/view/Return_Location_header_after_resource_creation

答案 2 :(得分:0)

DTO(数据传输对象)就像POJO(普通旧Java对象)。它应该只有getterssetters,而不是任何业务逻辑。

来自Wikepedia:

  

数据传输对象是在其间传输数据的对象   流程。其使用的动机是之间的沟通   过程通常采用远程接口(例如,web)   服务),每次通话都是昂贵的操作。因为   每次通话的大部分费用都与往返时间有关   在客户端和服务器之间,减少数量的一种方法   调用是使用聚合数据的对象(DTO)   可能会被多次通话转移,但这是有效的   仅限一个电话。

     

数据传输对象与业务对象之间的区别   数据访问对象是DTO没有任何行为,除了   用于存储和检索自己的数据(mutators和accessors)。   DTO是不应包含任何业务逻辑的简单对象   这将需要测试。

     

此模式通常在远程接口之外使用不正确。   这引发了作者的回应[3],他重申了这一点   DTO的全部目的是将数据转移到昂贵的遥控器上   调用

理想情况下,对于那些操作,您应该创建一些帮助程序,或者可以将它们添加为控制器。