我有一个Restful web服务。预订房间可以更换。哪个URI更好的解决方案?如何命名资源标识符?
一)http://localhost/hotel/Xhotel/Reservation/15
B)http://localhost/hotel/Xhotel/Room/4/Reservation/15
C)http://localhost/hotel/Xhotel/Reservation/15/Room/4
我有一个Restful web服务。预订房间可以更换。哪个URI更好的解决方案?如何命名资源标识符?
一)http://localhost/hotel/Xhotel/Reservation/15
B)http://localhost/hotel/Xhotel/Room/4/Reservation/15
C)http://localhost/hotel/Xhotel/Reservation/15/Room/4
只取决于你的需求。
例如,如果预订可以跨越多个房间,则选项b)和c)将不会成为访问完整预订的良好URL。
另一个问题是,如果您的预订ID在所有房间中都是唯一的,或者需要房间ID以及唯一标识预订。
然后,如果我选择了选项a),我应该如何建立房间和预订之间的关系? – Iguramu 2009-08-24 12:31:42
请参阅下面的答案。 – 2009-08-24 12:32:19
首先你写RESTful。 REST是一个缩写。
其次,你应该通过Reservation ID访问它们,所以第一个选项是最好的。
预约(唯一密钥:预约ID)有许多房间(Forign Key:预约ID)。
使用第二个选项查看特定房间的预订情况。 您也可以使用第三个选项来显示预订中的房间数据。
如果您检查此网站:http://stackoverflow.com/questions/207477/restful-url-design-for-search。正如你所看到的,汽车和车库之间有一种关系。所以我认为,如果车库/ yyy /汽车是更好的选择,所以房间/ 4 /预订/ 15也是。 – Iguramu 2009-08-24 12:47:49
这只是我的两分钱,你应该做任何你认为正确的事情。 – 2009-08-24 12:58:59
资源的每种表示只能有一个URI。如果预订是重要的部分,并且房间可以更改,则不要在URI中包含房间号。然而,只要你遵守约束条件,REST并不特别关心你的URI是什么样的。
的问题是不是URL或URI,问题是如果要求这3个选择,你上述仅仅是美化LINK或者你去抓住或类似的请求得到的所有结果:
一个)
$_GET['hotel'] = "Xhotel";
$_GET['Reservation'] = 15;
b)
$_GET['hotel'] = "Xhotel";
$_GET['Room'] = 4;
$_GET['Reservation'] = 15;
三)
$_GET['hotel'] = "Xhotel";
$_GET['Reservation'] = 15;
$_GET['Room'] = 4;
这是我们可以从你的URI的3格式获得和最后2个是相同的。
如果您打算利用从它是好的,请求的数据,如果不是这样只会让你的程序看起来没有效果所以我建议第一大,如果你这样做只是预订
尝试根据酒店UUID将预订ID设置为UUID v3或v5,以使其具有唯一性。
“预约房间可以分配给其他房间”是什么意思? – 2009-08-24 12:17:47
我想试试这个,但我不知道他在问什么 – Will 2009-08-24 12:19:19