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 并不是真正的一套坚如磐石的标准,但有一些很好的实践。

在这种特殊情况下,我建议您像现在一样使用现有资源字段的查询参数,以选择具有eggpotatotype 值的项目。但是要只选择一个子集,您可以引入一个field 查询参数。所以你可以像api/items?type=egg&fields=name这样调用你的API,只获取egg类型的所有资源的name字段。

附言 这不是我的发明,我已经在其他 API 中看到了这一点,称为select。据我所知,Facebook 在其 API 中有此功能。

【讨论】:

谢谢,看起来是个不错的方法。我想知道 - 不包括 ID 是否有意义? (即我应该始终将其作为一个字段强制执行吗?) 我想这真的取决于您的用例和 ID 的含义。如果预计客户很快会再次引用该资源,我将始终包含该 ID。如果没有,那你就不需要了。

以上是关于REST - 仅在集合中获取资源的特定属性的主要内容,如果未能解决你的问题,请参考以下文章

在 REST 中,我们如何处理返回资源集合的多种方式?

软件定义网络基础---REST API的设计规范

Flowable入门系列文章91 - 一般可流动的REST原则 02

使用 spring-data-rest 将资源添加到集合

如何在 ASP.NET MVC 中获取模型状态错误的集合?

如何使用 linq 从集合中获取特定集合?