2010-07-09 66 views
1

我有一个REST服务建模项目和容器。项目是单个原子实体,容器是包含项目的实体。我将如何用RESTful方式建立这种关系?REST服务中的实体关联

例如,这里是一个项目的请求:

http://server/items/1 
=> {"name": "Item 1"} 

假设该项目是在一个容器:

http://server/containers/1 
=> [{"name": "Item 1"}, {"name": "Item 2"}...] 

我将如何模型将项目添加到一个容器?或从容器中取出物品?项目对它们所在的容器一无所知,所以对该项目的PUT将不起作用。容器知道它们包含的项目,但是对于容器来说,整个容器需要先装载(可能非常大)。

目前,我张贴的容器,但“动作”查询参数有一个关于它的代码味道:

http://server/containers/1?action=add 
POST {"name": "Item 1"} 

是否有这更好的办法?

回答

1

POST最常见的用法之一是添加下级资源。因此,简单地使用,

http://server/container/1 
POST {"name": "Item 1"} 

就足够了。要从容器中取出物品,你可以做,

DELETE http://server/container/1/Item/1