【发布时间】:2010-03-28 05:29:31
【问题描述】:
我目前(我正在尝试)为社交网络设计一个 RESTful API。但我不确定我目前的方法是否仍然符合 RESTful 原则。如果一些聪明的头脑能给我一些建议,我会很高兴。
假设以下 URI 表示用户帐户的名称字段:
people/{UserID}/profile/fields/name
但是有近百种可能的字段。所以我希望客户创建自己的字段视图或使用预定义的视图。假设以下 URI 表示一个预定义的字段视图,其中包括字段“name”、“age”、“gender”:
utils/views/field-views/myFieldView
由于字段视图是一种更高层次的逻辑,我不想将字段视图的支持混入“people/{UserID}/profile/fields”资源中。相反,我想做以下事情:
utils/views/field-views/myFieldView/{UserID}
另一个例子
假设我们要执行一些数量运算(希望这是正确的英文名称)。我们有以下 URI,而每个 URI 都指向一个人列表——他们的朋友:
GET people/exampleUID-1/relationships/friends
GET people/exampleUID-2/relationships/friends
现在我们想知道他们的哪些朋友也是我的朋友。所以我们这样做:
GET people/myUID/relationships/intersections/{Value-1};{Value-2}
而“{Value-1/2}”是“people/exampleUID-1/friends”和“people/exampleUID-2/friends”的 url 编码值。然后我们得到所有三个人的朋友的代表。
虽然 Leonard Richardson 和 Sam Ruby 在他们的“RESTful Web Services”一书中指出 RESTful 设计在某种程度上类似于“极端面向对象”的方法,但我认为我的方法是面向对象的,因此符合 RESTful 原则。还是我错了?
如果不这样做:在谨慎使用此类“面向对象”方法并避免基于查询的 REST-RPC 混合时,通常是否鼓励使用?
提前感谢您的反馈,
宠物
【问题讨论】:
标签: api architecture rest