树的restapi设计

树的restapi设计,rest,tree,resources,Rest,Tree,Resources,我正在考虑如何为树状结构设计RESTAPI。 我已经读过这篇文章了:还有很多其他的资料,但我仍然在几种可能性之间徘徊 这是我的树(根是人工的,因为它只显示在UI中,数据模型没有根) root | | | | | | | |>10000 | | |状态| | |=黄金| | | |=帮助快捷| | | |回调|| |状态| | |=银色| | | |=帮助快速| | ___|节点| | | |分支| | | |另一个|节点| | | | |结果|节点|| ... 其中,| |是一个节点,\uuuu

我正在考虑如何为树状结构设计RESTAPI。 我已经读过这篇文章了:还有很多其他的资料,但我仍然在几种可能性之间徘徊

这是我的树(根是人工的,因为它只显示在UI中,数据模型没有根)

root | | | | | | | |>10000 | | |状态| | |=黄金| | | |=帮助快捷| | | |回调|| |状态| | |=银色| | | |=帮助快速| | ___|节点| | | |分支| | | |另一个|节点| | | | |结果|节点|| ... 其中,| |是一个节点,\uuuu>xxx\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 如果信用>10000且状态=黄金,则帮助快速和回调

从一个非常抽象的角度来看,它由节点和分支组成。因此,我的第一个想法是拥有两种资源:

  • /带有PUT、POST和DELETE的树/树名/节点
  • /带有PUT、POST和DELETE的树/树名/分支
还有一个GET资源:

  • /树/树名
它将整个数据作为一个返回

这就是我们现在所需要的

但是,您可以看到这里的节点具有不同的含义

首先是一个条件节点(credit),它有一个属于一起的条件分支(>10000),然后是一个结果节点(叶),它可能包含许多分配和另一个特殊字段,该字段是分配特有的,并且不存在于条件中

因此,另一种方法是:

  • /树/名称/条件节点放置、发布、删除
  • /树/名称/分支放置、发布、删除
  • /树/名称/请假、张贴、删除
  • /树/名称/结果放置、发布、删除(只是为了方便休假)
或者使用完全不同的东西

我发现我提出的所有解决方案都有一些缺点,所以我对每一个想法、讨论点或考虑都持开放态度

谢谢, 斯文


编辑当使用普通的
节点
分支
方法时,我将通过
类型
键值对来识别传输的数据,键值对将包含诸如conditionNode、resultNode、result之类的类型,并且可能更多。这可以映射到可能的资源。

我想JSON可以很好地表示树。为什么不使用它呢?JSON是我用来表示数据的,但是我提供哪些REST端点呢?REST表示HTTP动词;URL应该指向您想要的资源。很难在这里设计整个东西。 root ___ |credit| __>10000__ |status| __=gold__ || = helpFast|| || = callBack || |status| __=silver__ || = helpFast|| ___ |node| __branch__ |another_node| __another_branch__ ||result_node|| ...