我正在构建REST API,以公开现有Java API的大部分功能。这两个API都供我的组织内部使用;我不必为外部使用而设计。我对这两种API都有影响,但是正在实现REST。Java API将继续用于本地应用程序(不会“淘汰”),但是REST API将用于重大的新开发。
一些Java API类只是数据(带有属性,getter,setter的bean)。并且至少其中一些有意义的是通过REST API以某种形式(作为数据(将被编组为XML或JSON))进行传输。例如,一个存储有关服务器计算机信息的类。对于这些数据类,我面临以下选择:我是否...
- 直接在REST API中公开原始Java类(或子类),或者
- 专门为REST API创建新的数据传输类(DTO模式)?
无论哪种方式,我都会有REST数据传输类。问题是是要注释原始文件还是创建新的文件(可能是原始文件的副本)。可能还有其他选择,但我将主要关注这两个。
#1的参数:
- 干(不要重复自己)
- 实施更快
- 升级REST API更容易
#2的参数:
- 如果REST API需要与Java API分开版本,该怎么办?(这很有可能。)
- 如果Java数据类发生重大更改(例如,删除属性,添加行为或更改类层次结构)怎么办?(这也有可能。)
底线是,似乎在DRY(#1)和去耦(#2)之间进行了权衡。
我倾向于从#1开始,然后如果出现问题,然后再转到#2,请遵循不构建无法证明自己需要的敏捷指导。这是一个坏主意吗; 如果我认为我最终还是会从那里开始,我应该从#2开始吗?
我的清单中是否缺少主要的论据/后果?