Rest 其余部分避免重复工作

Rest 其余部分避免重复工作,rest,Rest,考虑下面的示例方案,如您所见,一个团与承包商之间存在多对多关系,这对于几个团来说可能是相同的 如果我必须创建两个拥有数百名普通承包商的团队,我基本上会将相同承包商的两倍上传到服务器: <regiments> <regiment> <contractors> <conctractor> <id>1</id> ... </contractor&g

考虑下面的示例方案,如您所见,一个团与承包商之间存在多对多关系,这对于几个团来说可能是相同的

如果我必须创建两个拥有数百名普通承包商的团队,我基本上会将相同承包商的两倍上传到服务器:

<regiments>
<regiment>
      <contractors>
        <conctractor>
        <id>1</id>
        ...
        </contractor>
        <conctractor>
        <id>2</id>
        ...
        </contractor>
      </contractors>
</regiment>
<regiment>
      <contractors>
        <conctractor>
        <id>2</id>
        ...
        </contractor>
        <conctractor>
        <id>5</id>
        ...
        </contractor>
      </contractors>
</regiment>
</regiments>

1.
...
2.
...
2.
...
5.
...
我正在使用一个PUT,其中军团和承包商有一个预定义的ID,因为我正在使用REST将桌面应用程序同步到web应用程序,并且两者都必须对其实体使用相同的ID

请注意,contractor对象非常大,并且有自己的子列表,因此重新上载一个contractor对于服务器来说是一个巨大的时间和资源损失


如何避免一次又一次地上传相同的承包商?

您没有理由不使用一个表示法,该表示法允许您链接到以前被
放置的现有承包商:

<regiments>
<regiment>
      <contractors>
        <contractor-ref uri="/contractors/1"/>
        <contractor-ref uri="/contractors/2"/>
      </contractors>
</regiment>
<regiment>
      <contractors>
        <contractor-ref uri="/contractors/2"/>
        <contractor-ref uri="/contractors/5"/>
      </contractors>
</regiment>
</regiments>


承包商是否可以作为自己的资源寻址?如果是的话,你可以在一个团中引用它。是的,我可以引用一个承包商,并将其添加到自己的剩余部分中。然而,如果我必须将N个团与一个承包商联系起来,我将不得不上传N个团,每个团都有一个重复的任务。这就是我所说的浪费。例如,泽西岛是如何序列化和反序列化这些URI的?如果你能用一些管理URI的示例代码来丰富答案,那将是很有帮助的。这将在很大程度上取决于你正在使用的服务器端技术。在我看来,您提出的是一个关于REST的概念性问题,而不是关于如何在服务器上实现这样一个方案。如果您想要一个实现答案,请提出一个实现问题。