【问题标题】:RESTFul way to reference resource with unique fields使用唯一字段引用资源的 RESTFul 方式
【发布时间】:2013-08-27 19:18:46
【问题描述】:

我们的 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 OR 键有什么问题吗?

【问题讨论】:

  • 仅供参考,接口的 RESTful 与用于访问资源表示的路径无关。多条路径指向同一个资源是完全可以接受的。

标签: rest restful-url hypermedia


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2013-05-28
    相关资源
    最近更新 更多