【问题标题】:How to name Resource Identifiers?如何命名资源标识符?
【发布时间】:2009-08-24 12:16:16
【问题描述】:

我有一个 Restful 网络服务。预订房间可以更改。哪个 URI 是更好的解决方案?

a)http://localhost/hotel/Xhotel/Reservation/15

b)http://localhost/hotel/Xhotel/Room/4/Reservation/15

c)http://localhost/hotel/Xhotel/Reservation/15/Room/4

【问题讨论】:

  • “预订房间可以分配到另一个房间”是什么意思?
  • 我会尝试取消这个,但我不知道他在问什么

标签: rest uri


【解决方案1】:

这仅取决于您的要求。

例如,如果预订可以跨越多个房间,那么选项 b) 和 c) 就不是访问完整预订的好 URL。

另一个问题是您的预订 ID 在所有房间中是否唯一,或者是否还需要房间 ID 来唯一标识预订。

【讨论】:

  • 那么如果我选择a),我应该如何建立Room和Reservation之间的关系?
【解决方案2】:

首先你编写 RESTful。 REST 是一个缩写。
其次,imo您应该通过预订ID访问它们,所以第一个选项是最好的。
预订(唯一键:预订 ID)有很多房间(外键:预订 ID)。
使用第二个选项查看特定房间的预订情况。 您还可以使用第三个选项来显示预订房间的数据。

【讨论】:

  • 如果您查看此站点:stackoverflow.com/questions/207477/…。如您所见,汽车和车库之间存在关系。所以我认为,如果garage/yyy/cars 是更好的选择,那么 room/4/reservation/15 也是。
  • 这只是我的两分钱,你应该做你认为正确的事情。
【解决方案3】:

资源的每个表示应该只有一个 URI。如果预订是重要部分,并且房间可以更改,则不要在 URI 中包含房间号。但是,REST 并不特别关心您的 URI 的外观,只要您遵循其约束即可。

【讨论】:

    【解决方案4】:

    问题不在于 URL 或 URI,问题在于您对上述 3 个选项的请求是否只是为了美化 LINK 或者您要从以下请求中获取或获取所有结果:

    a)

    $_GET['hotel'] = "Xhotel";
    $_GET['Reservation'] = 15;
    

    b)

    $_GET['hotel'] = "Xhotel";
    $_GET['Room'] = 4;
    $_GET['Reservation'] = 15;
    

    c)

    $_GET['hotel'] = "Xhotel";
    $_GET['Reservation'] = 15;
    $_GET['Room'] = 4;
    

    这是我们可以从你拥有的 3 种 URI 格式中得到的,最后 2 种是相同的。

    如果您要利用请求中的数据,那没关系,如果不是,这只会让您的程序看起来更大而没有效果,所以如果您只做 Reservation

    ,我建议第一个>

    尝试根据酒店 UUID 将 Reservation ID 设为 UUID v3 或 v5,以使其唯一。

    【讨论】:

      猜你喜欢
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多