Ruby on rails 丑陋数据库的API
我们在我的工作场所有一个相当丑陋的遗留数据库。注意,我并不是一个数据库专家,但有些事情看起来很奇怪。例如,下面这样的表格很常见Ruby on rails 丑陋数据库的API,ruby-on-rails,Ruby On Rails,我们在我的工作场所有一个相当丑陋的遗留数据库。注意,我并不是一个数据库专家,但有些事情看起来很奇怪。例如,下面这样的表格很常见 Zuser zuserid shoerdesc description virtualattributes birthdate1 birthdate2 qa_bookstoreid 我们最近启动了一个“假定的”RESTAPI,它充当数据库中一些表的转储。最终用户会得到大量空值字段、难以解释的数据和大量垃圾数据 API示例: { "las
Zuser
zuserid
shoerdesc
description
virtualattributes
birthdate1
birthdate2
qa_bookstoreid
我们最近启动了一个“假定的”RESTAPI,它充当数据库中一些表的转储。最终用户会得到大量空值字段、难以解释的数据和大量垃圾数据
API示例:
{
"last_updated" : "2010/10/10",
"details" : {
"zuserid" : "b5b4546b3b33b",
"birthday1" : "1980/10/10",
"birthday2" : "1980/10/10",
"zaccess" : null,
"zwebsite" : null,
..
}
}
为了使API能够与实际使用它的单个客户机一起工作,我们必须进行大量的手工操作,告诉他们向最终用户显示什么,等等
好消息是高层人员表示有兴趣在将来使API更通用、更易于使用。从那以后,我已经开始寻找这种情况下的良好实践,但我的数据库经验非常有限,我不确定该去哪里寻找。(我主要是一名软件/网络工程师。)
我主要研究了DataMapper模式(我们在Rails中使用ActiveRecord)。看起来确实需要做很多工作,但我仍然不确定是最好在应用程序级别进行映射,还是创建一个在新数据库中进行映射的新应用程序,并以某种方式将两者同步
有什么好的解决方案吗?最好是不会破坏现有数据库的东西。请注意,我的“corpochain”级别相当低,因此大多数决策都是由其他人做出的。根据我的经验,任何好的RESTAPI都需要相当多的映射到其域模型。否则,API会泄漏内部域,或者内部域最终会按照API建模——这两种方法都远远不够理想 我的建议是,将您的API与您的域模型完全分离,这样您就可以在不影响其他API的情况下对其进行改进。有些人更进一步,将域模型与持久实体分开(Robert C.Martin大力提倡这一点……即使在Rails中也是如此) 如果您做出这个决定,那么您可以开始考虑我们的客户想要什么API?使其易于使用、一致且与您的客户相关(正如您所提到的,握手是API不清晰的症状)