web-services - 用查询组成一个小组的 Restful 方法是什么

标签 web-services rest

考虑以下http请求:

GET /defects?group-by=priority

我希望按缺陷的优先​​级对返回的缺陷集合(提要)进行分组。即,返回的Feed由缺陷(资源)和组信息组成。

我考虑过一些会在返回集合之前返回组标题和计数的事情,例如:
<content>
<Group val="High" count="567"/>
<Group val="Medium" count="437"/> 
<Group val="Low" count="19"/> 
<Defect ,,,,>
<Defect ,,,,>
<Defect ,,,,>
</content>

这种表示的问题是查询的资源(URL)有缺陷,因此客户端希望收集缺陷而不是Group元素。

我想解决这个问题的一种方法是为缺陷定义一个单独的组资源,即:
 defects/groups?group1=priority

它将返回组及其数量的集合,然后客户端可以查询缺陷资源中的数据本身。但是这种设计很麻烦并且需要额外的往返行程,更不用说当在组资源的调用和缺陷资源之间添加/删除缺陷时可能出现的一致性问题。

最重要的是,返回一个按属性分组的元素集合的好方法是什么?

编辑我首先想到该问题应该由ATOM发布标准解决。但是即使ATOM解决了它,我仍然需要支持其他表示形式(XML,JSON),因此我正在寻找RESTful方法中更固有的模式。

最佳答案

我认为您的要求是不可能的。

如果客户希望收集缺陷,则可以按优先级排序,但是

a group of defects != a defect

因此,您无法返回组的集合。

您可以添加一个讨厌的技巧,以将属性添加到缺陷资源的优先级和优先级组大小,但这对我来说似乎很糟糕。

我认为正确的Restful方法是:
  • 设计服务以返回组
    缺陷

  • 或者
  • 返回缺陷的订购者
    优先,让客户来做
    资源分组和计数
    在每个组中。
  • 关于web-services - 用查询组成一个小组的 Restful 方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/424587/

    相关文章:

    asp.net - 与简单的文件请求相比,您预计 Web 服务请求的响应时间开销是多少?

    python - 从 Web 响应中解析 Xml

    java - Spring 3 MVC - 在生产中找不到 Url 映射 (404)

    java - 从 Rest 服务在 mongodb 中运行 native 查询

    java - 如何使用 MuleSoft 为相同的 Web 服务开发 REST 和 SOAP 接口(interface)?

    python - 在 python eve 应用程序中执行 PUT、PATCH 返回,请求的 URL 不允许该方法

    android - Android 中的 Web 服务异常(java.net.SocketException 权限被拒绝)

    web-services - SOAP header 与HTTP header

    php - 从网络客户端访问 REST API 的最佳方式是什么?

    java - 在 Vert.x Web 路由器上的不存在路由上提供静态 webroot/index.html 数据