0

我有一个 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

4

4 回答 4

2

这仅取决于您的要求。

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

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

于 2009-08-24T12:18:56.877 回答
0

资源的每个表示应该只有一个 URI。如果预订是重要部分,并且房间可以更改,则不要在 URI 中包含房间号。然而,REST 并不特别关心你的 URI 是什么样子,只要你遵循它的约束。

于 2009-08-24T14:08:44.170 回答
0

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

于 2009-08-24T12:30:31.670 回答
0

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

一个)

$_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 ID 设为基于酒店 UUID 的UUID v3 或 v5,以使其唯一。

于 2015-10-04T07:38:18.877 回答