2014-01-26 55 views
2

在讨论设计REST api时,开发人员之一告诉部分响应不是RESTful。 例如在返回/ forums/{forum_id} /用户的响应时,我只是返回用户名和头像图片。 当有人想要关于用户的详细信息时,我发送{年龄,地点,points_scored等等}。 虽然试图使用余烬数据对这个模型进行建模,但我们在https://github.com/emberjs/data/issues/51 中提到的问题中找到了问题。那时开发人员指出部分响应是针对RESTful设计的。但是我在任何REST书籍或互联网上找不到任何此类信息。此外,我发现谷歌实际上在其RESTful API中使用了部分响应,并且有很多人使用它。部分响应未RESTful

所以我们想知道的是部分响应(如上所述)实际上不推荐用于RESTful服务或其仅仅是设计选择问题。

回答

-1

与常见误解相反,REST并不强制读取和写入相同的确切资源。

CouchDB是一个非常好的示例。它处理:

  • “对象”(又名 “文档”),可以是创建阅读更新删除
  • 和 “意见”,这是从计算文件,那只能是请看

在你的情况下,/forums/01a0/users将是一个“视图”,而/user/99a7将是一个“对象”。

+0

嗨Aurélien,你说的很好。但我想知道的是,如果我在API中返回资源的部分视图(例如,仅返回一个Person的名称),那么我是否违反REST原则? – Rahul

+0

@Rahul在列出论坛用户的“视图”中,您肯定可以获得关于每个用户的部分信息(如姓名和头像图片)。 –

+0

什么是痛苦(尤其是高速缓存),当您将来自其他资源的数据混合到可更新资源中时。只读“视图”会使问题更加简单。 –