FindFirstByAttribute的RESTful路由结构

时间:2018-05-11 23:39:45

标签: rest

为具有其id的资源项设计REST API,并且还具有非唯一的引用号。此API的一个最典型的查询将类似于

FindFirstByReference(referenceNumber)
FindLastByReference(referenceNumber)

每个都返回一个项目,而不是一个项目的数组。

我在想如何最好地将其转化为REST。

(1)第一个选项是列出所有项目,按引用过滤,并使用return_one的附加属性(可以是firstlast列表)

GET /items?reference=123&return_one=first

这种方法的问题是,由于属性return_one的存在与否,更改响应的形状感觉不对。

(2)第二个选项是选择查询返回的items数组的子资源。

GET /items?reference=123/first

(3)第三种选择是使用引用属性作为id,以便只选择一个。

GET /items/reference=123&return_one=first

这可能令人困惑,因为(1)和(3)之间的差异只是一个字符。

这些选项中的任何一个似乎都可以吗?还有其他选择我应该考虑吗?感谢。

1 个答案:

答案 0 :(得分:1)

最好不要有能够提供列表或单个对象的API。在您的情况下,可以my-program-exe: <stdin>: hGetLine: end of file 获取项目资源列表。而当您想要将其限制为单个资源或有限数量时,可以使用/items参数来完成。因此,即使限制为1,它也将是一系列项目,因此保持了均匀性。您还可以应用另一个查询参数limit,您可以根据任何字段对其进行排序。

示例sort_by

注意:对于sort_by,您可以将+定义为升序,将 - 定义为降序