REST - 仅在集合中获取资源的特定属性
Posted
技术标签:
【中文标题】REST - 仅在集合中获取资源的特定属性【英文标题】:REST - Getting specific property of resources in collection only 【发布时间】:2015-02-23 18:48:34 【问题描述】:我正在开发我的 REST API 的搜索功能,目前 URI 的结构如下:
api/items?type=egg,potato
假设每个项目资源有 4 个属性:
ID、名称、类型、评级
设计我的 URI 并返回每个资源的属性子集的最轻松的方式是什么,例如只有这些资源的名称?
--
我问这个的原因是我经常想要一个不那么繁重的结果集。例如,我可以使用动态填充的名称作为下拉列表构建 AJAX 搜索 - 但我不希望每个请求都返回额外的膨胀。
【问题讨论】:
【参考方案1】:REST 并不是真正的一套坚如磐石的标准,但有一些很好的实践。
在这种特殊情况下,我建议您像现在一样使用现有资源字段的查询参数,以选择具有egg
或potato
的type
值的项目。但是要只选择一个子集,您可以引入一个field
查询参数。所以你可以像api/items?type=egg&fields=name
这样调用你的API,只获取egg
类型的所有资源的name
字段。
附言
这不是我的发明,我已经在其他 API 中看到了这一点,称为select
。据我所知,Facebook 在其 API 中有此功能。
【讨论】:
谢谢,看起来是个不错的方法。我想知道 - 不包括 ID 是否有意义? (即我应该始终将其作为一个字段强制执行吗?) 我想这真的取决于您的用例和 ID 的含义。如果预计客户很快会再次引用该资源,我将始终包含该 ID。如果没有,那你就不需要了。以上是关于REST - 仅在集合中获取资源的特定属性的主要内容,如果未能解决你的问题,请参考以下文章