如何"正确" RESTful地将现有实体添加到集合中

时间:2014-03-26 21:53:27

标签: rest

我有两个已存在的对象,

/foo/1 GET
/bar/1 GET

每个foo都有bar个,每个bar都有foo个。如何将bar REST重新添加到foo的{​​{1}}集合中?

这似乎是一种可能的解释:

bar

但它打破了/foo/1 PATCH { bars: [1] } 附加到bar的{​​{1}}应该通过foo显示的想法。这似乎也是有效的:

/foo/1/bar/

并且最接近wikipedia描述,但由于我们没有创建新的/foo/1/bar/ POST { id: 1, ... } ,这有点令人困惑。这也会产生一种奇怪的歧义,因为也可以通过此方法创建分配给此bar的新bar。最后,有:

foo

我只是简单地喜欢,因为它简单,但不同意维基百科的描述,也没有明显的方法从列表中删除/foo/1/bar/1 POST (因为{{1将删除bar)。

我意识到REST是一种架构风格而不是一种明确的标准,但必须有一些最不成问题的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

我通常通过使用第三个资源来解决foo和bar之间的映射问题,例如:

POST /foo
<- "id": 22

POST /bar
<- "id": 17

POST /foo-bars
-> { "fooId": 22, "barId": 17 }