Api Restful资源和关系数据库不兼容

Api Restful资源和关系数据库不兼容,api,rest,design-patterns,api-design,Api,Rest,Design Patterns,Api Design,假设我有一个包含100多个表的关系数据库。每个表都模拟了某种实体(人、地址、车辆、狗等)。假设我还有一个restful API和一群想将数据发布到这个数据库中的人。很多时候,这些数据是以XML包的形式出现的,或者是来自web表单或类似性质的东西的POST数据有时我们需要发布到数据库的所有表,有时是大多数表,有时是一些表,有时是一个表。 现在需要我们的客户机通过restful方式将多资源数据集群发布到100多个表的持久性中 POST /person POST /email POST /vehicl

假设我有一个包含100多个表的关系数据库。每个表都模拟了某种实体(人、地址、车辆、狗等)。假设我还有一个restful API和一群想将数据发布到这个数据库中的人。很多时候,这些数据是以XML包的形式出现的,或者是来自web表单或类似性质的东西的POST数据有时我们需要发布到数据库的所有表,有时是大多数表,有时是一些表,有时是一个表。

现在需要我们的客户机通过restful方式将多资源数据集群发布到100多个表的持久性中

POST /person
POST /email
POST /vehicle
POST /insurance
他疯了!所以我们可以用一种资源来代替

POST /auto-record
{ post body of key values for all the tables needed to make an 'auto-record' }
它将连接到某种业务逻辑,这种逻辑知道如何插入所需的数据库的许多表中。好的,很好。但是现在我在想,这个设计是否遵循开放/封闭原则?如果我们需要更新/添加/删除什么是“自动记录”,那么我们就把客户搞砸了


restful api如何处理资源分组?还是根本就不是?有替代方案吗?

您可以实现更多版本的RESTful API资源
/auto-record
。现在将您的资源URI修改为
/v1/auto-record
。当出现功能更改请求时,您只需向客户提供一个新资源
/v2/auto-record
。旧功能将保留在
/v1/auto-record
中,新用户将在
v2/auto-record

中获得所需的功能。您遇到了这个问题,这是一个基于意见的领域。谁说,所有项目都必须遵循所有可靠的原则?通常,以其他利益的名义,你放弃了一些你通常会遵循的原则。我不知道你的方法中有任何违反RESTful模式的情况。也许你应该考虑重命名你的资源名,因为
auto-record
太抽象了。提供一个获取、发布、更新或删除更复杂实体的资源(有宠物、地址等列表的人)应该没有问题。见下面我的答案。附言:REST原则不是一个条令,它是HTTP协议与资源一起工作的正确用法。