休息资源应该在集合中具有相同的结构

时间:2016-10-07 12:58:58

标签: rest restful-architecture api-design apigility

我在GET /task/ID显示资源时以及集合GET /task中的行时发现了有关REST子集的问题。 REST - Resource and Collection Representations

我正在使用Apigility。

我知道REST不是官方的,但希望尽可能严格地保持整体最佳实践/标准。

我可以在集合和资源中拥有其他字段吗? cource部分将是相同的,但对于收集我需要一些额外的信息进行过滤,在资源中现在需要它们。

这会以某种方式破坏某些规则吗?

2 个答案:

答案 0 :(得分:1)

在REST集合响应中返回资源的部分表示并不常见,而在请求单例端点时返回完整表示。

请参阅示例here(我在this search on Google找到的第一个链接之一,还有更多链接。)

  

获取馆藏

     

获取像“成员”这样的集合可能会返回
   1)整个资源列表作为链接列表,
   2)每个资源的部分表示,或
   3)集合中所有资源的完整表示。

因此,集合中的资源表示与单例表示不同并不罕见,但我想说您宁愿拥有更少的数据。

您在考虑添加到集合中的响应时,有哪些特定字段?你能举个例子吗?

答案 1 :(得分:0)

这肯定是不寻常的,保持一致性更好,为什么同样的东西有2个型号?查看Richardson Maturity Model level 1,可以预期服务端点映射到(单个)资源。那么过滤的额外信息是什么意思?

如果这是一个常见的场景,您可能希望通过模板化的URI(查询字符串)在服务器上处理它,如下所示:

GET /task?type={type}&property2={value2}

否则,您可以只获取它们并在客户端上进行过滤(在这种情况下,您肯定需要这些属性)。