0

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

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

GET example.com/rest/customers/1

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

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

现在,让我们假设 customer 中的两个字段唯一标识它,name ("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键有什么问题吗?

4

1 回答 1

1

首先,我只是不会这样做。如果客户有唯一的 id(他们应该),我不会允许最终用户指定 N 其他恰好也唯一标识客户的字段。这对用户来说很乱(哪个字段先出现?),在后端对你来说也很乱。

对于第二点,问题是:当他们同时指定两者时会发生什么?哪个优先?他们会记住吗?你想同时支持两者吗?如果您可以侥幸逃脱,只允许一种方法来做任何特定的事情通常是一个好主意。

于 2013-08-28T00:03:36.020 回答