REST api desing。检索和保存子记录

时间:2018-05-08 08:00:13

标签: rest restful-architecture

我正在设计一个休息api,我对从关系中暴露和消费孩子有一些怀疑。 假设我有一个与实体B有一对多关系的实体A(所以A可以附加一些B),我设计一个端点来创建实体A,实体A的DTO包括实体B的列表,用户提供有效的一个,它也应该被保存吗?

实施例: 对某个端点执行发布,例如/ API / V1 / AS

{
    entityAfield1: someValue,
    entityAfield2: someOtherValue
    Bs: [
        {
            HERE a valid B payload
        }
    ]
}

我还应该保存B并在A和B之间建立关系吗?如果B还有一些孩子怎么办?它也应该保存吗? 或者我应该只保存A并创建一个像

这样的端点
/api/v1/As/{Aid}/Bs/{Bid}

创建关系? 关于获取数据的同样问题。应该总是找回所有孩子吗?我无法在网上找到明确的答案。

1 个答案:

答案 0 :(得分:0)

可以通过返回B的ID来解决问题。这样,服务用户将决定是否检索相关资源的实际数据。

与这样的端点进行交互

/api/v1/Bs/{Bid}

可以使用,也可以使用更详细的

/api/v1/As/{Aid}/Bs/{Bid}

但是,嵌套的端点太多,比如

/api/v1/As/{Aid}/Bs/{Bid}/Cs/{Cid}/Ds/{Did}

应该避免,并且很可能表明存在设计缺陷。

对于树结构或一般的多对多关系,应该公开表示链接的中间资源。 Google提供了a good example REST API实现,其中包含了#34;儿童"部分对这种情况特别有帮助。