宁静的设计似乎倡导平或浅的结构化表(至少当资源表示为XML)。一个资源表示应该只包含的资源,这URI标识。我想知道当它是合理的本资源的分资源在父资源?

详细阐述,可考虑这一点:公司可能具有多个雇员。通常这种情况可能会被设计作为两个单独的资源、公司和雇员,其员工会是公司的子资源。

/company/acme/
/company/acme/employees/
/company/acme/employee/john

与此URI设计,公司代表应该包括链接到其雇员,但XML表示可能不会包括emplyoyees本身。

因此,当它是有意义的本分项目通过的父母吗?而且是有一种情况,这将是明智的本分项目 通过他们的父母。我的意思是,就不会有URI分项目。他们能够达到只能通过父资源。

<company>
<name>Acme</name>
 <employees>
  <employee>John</employee>
  <employee>Jack</employee>
 </employees>
</company>

它是合理的提供的唯一方法访问资源:如果父母,暴露了其分项,可以有一个明确的URI的分项目?所以,如果公司的XML包含公司的雇员,它会做出有意义的提议/公司/acme/雇员URI尽管,你可以得到相同的信息通过的公司资源?

有帮助吗?

解决方案

如果子资源才有意义的背景下其父母,那么,它应该返回嵌套在其父母。例如,在HTML, <li> 元没有意义的作为子资源在它自己的。

然而,如果一个资源可以单独和你想要操纵的资源独立的任何其他资源,那么它应该有它自己的URI。这样,你可以发布的或把这种资源而不影响其他相关资源,并没有鹦鹉他们回到服务器。如果你有操纵一切的父母,想想会发生什么,如果一个人做得到,修改一个分项目,然后执行一个把整个事情与这一分项目发生变化;如果别人改变一个人在此期间?然后你需要添加锁和义事务,这违背了整个无国籍状态的其余部分。

对于请求获得至少,这可能是一个很好的想法具有一些形式的大宗的查询接口,通过这个客户可以获得大量的资源;有一个新HTTP请求对每个资源可能需要很长的时间,因为它意味着新一轮的旅行通过网络为各个得到。它可能是有意义的有大量更新的功能。但如果你想要能够操纵一个资源时,需要提供一个URI为,一个资源。

是的,这是完全没有超过一种方式访问的资源。你可以把它想象成一个博客;你可以得到的故事在主页,或存档的网页,或通过他们的永久.

编辑:如果你想要来一堆没有更新运到的问题具有一个客户得到陈旧的数据服务器,基本上你有两个选择:

  1. 锁定.一个告诉客户的服务器"我想上的锁这一整套的数据",取的数据,它希望修改,修改的数据,将其送回到服务器,并解除它。
  2. 乐观的并发:客户下载的数据集,这是标记与某种形式的修订标签的服务器变化,每次获得新的数据。客户修改,并将它发回到服务器。如果任何其他数据集已经修改,在此期间,修订的标签将出的数据,并将服务器将作出回应"对不起,你的数据是过时了,再试一次"。

这些每一个都有优点和缺陷。该问题与锁是,它是全状态,因此不适合成其他建筑得非常好。如果客户程序的崩溃或者死了否则的话,它具有的锁,然后,数据将会永久的锁定的除非你有某种超时锁,从而可以获得棘手。锁定也可能导致的僵局,如果客户在做一些花哨的交易,涉及多个锁。

该问题与乐观并行的是,如果有一个高负荷数据集,有很多的客户改变这一次,它可以采取许许多多尝试之前,一个给客户可以发表其数据;事实上,一个缓慢的客户最终可能会被完全切断发布更新,因为其他客户不断变化的数据的方式,意味着缓慢的客户的变化总是失败。

你需要自己决定哪些选择适合你。这些问题也出来的时候改变一个单一的资源(一种更新可能会破坏另一),但是当你集合的资源投入到一批接口,他们是要来了更多的经常。这就是为什么我将建议具有两个接口,如果你要聚集资源;在其中的资源可以单独访问,以及一个可选散口在哪里许多资源可以阅读和书写,在一次。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top