RESTFul方式引用具有唯一字段的资源

时间:2013-08-27 19:18:47

标签: rest restful-url hypermedia

我们的REST接口的一个要求是每个资源都可以通过唯一字段标识(除了主要标识符)。原因是我们希望能够处理批量导入数据 - 在这种情况下,客户端无法知道系统生成的主要标识符。

这意味着我们必须能够通过唯一字段引用我们的资源。使用主键我们的读取请求如下所示:

GET example.com/rest/customers/1

并获取与该客户相关的订单

GET example.com/rest/customers/1/orders

现在,假设客户中的两个字段唯一地标识它,名称(“foo”)和businessId(“bar”)。鉴于此,我想出了以下URI来获取该客户的订单:

GET example.com/someotherpath/customers/foo,bar/orders

但我不喜欢我有不同的路径来确定这是通过唯一字段访问的资源。您将如何使用唯一字段而不是主键以RESTful方式构造上述查询?

此外,订单如下:

{
    <SNIP>
    "orderId" : "42"
    "_links": {
        "customer": {
            "href" : "rest/customers/1"
            "key": [ "foo", "bar" ]
        }
    },
}

在与界面通信时允许客户端互换地指定href OR 键的任何问题?

1 个答案:

答案 0 :(得分:1)

对于第一位,我不会这样做。如果客户具有唯一ID(并且他们应该),我将不允许最终用户指定碰巧也唯一标识客户的N个其他字段。这对用户来说是混乱的(哪个领域先行?)并且在后端对你来说也很麻烦。

对于第二位,问题是:当他们指定两者时会发生什么?哪个优先?他们会记得吗?你想要支持两者吗?如果你能逃脱它,通常只允许一种方式去做任何特定的事情。