REST和嵌套资源

REST和嵌套资源,rest,Rest,假设我有两种资源:手推车和物品。项目可以嵌套在购物车内,也可以不嵌套在购物车内: /carts/32658/items/screwdriver /items/screwdriver 购物车中的同一项目和购物车中的同一项目在REST约定中是不同的资源吗?如果您谈论的是同一个螺丝刀,那么它们是相同的资源。一个资源可能有多个URL。在这种情况下,其中一个被选为官方URL,称为规范URL。官方的螺丝刀URL可能是/items/rowist,客户端可以从中获取有关它的完整信息。正如其他答案和评论所建议

假设我有两种资源:手推车和物品。项目可以嵌套在购物车内,也可以不嵌套在购物车内:

/carts/32658/items/screwdriver

/items/screwdriver

购物车中的同一项目和购物车中的同一项目在REST约定中是不同的资源吗?

如果您谈论的是同一个螺丝刀,那么它们是相同的资源。一个资源可能有多个URL。在这种情况下,其中一个被选为官方URL,称为
规范URL
。官方的螺丝刀URL可能是
/items/rowist
,客户端可以从中获取有关它的完整信息。

正如其他答案和评论所建议的,当对一个资源使用多个URI并这么说时,不会违反REST

服务套件中的每个资源将至少有一个标识它的URI


但是如果允许在第二个资源链接上使用所有HTTP方法,我会重新考虑。给定
/carts/32658/items/螺丝刀
允许
放置可能不好,因为客户可能认为他们只会在cart#32658中更改螺丝刀,而不会更改全局螺丝刀开发者实体。

即,在我的
carts/32658/items/
资源中,我应该链接到
/items/Switch
资源,并提供有关项目的完整信息,和
/carts/32658/items/row
url应该被禁用吗?不,你不应该禁用
/carts/32658/items/row
/carts/32658/items/Switch
/items/Switch
都是同一资源的URL。它们可能提供相同的信息(也可能不提供)和相同的表示(一个xml和另一个json)。他们都在谈论同一件事(资源)——螺丝刀。如果您想将某些URL标记为官方URL,您可以在
/carts/32658/items/rowist
中添加
内容-位置
标题,指向规范的
/items/rowist
。因此,您是说螺丝刀的官方URL在这里
/items/rowist
。您是否已经咨询过类似的问题,如?