2010-08-23 34 views
1

我設計我的命名空間,使得我在DB存儲ID是在數據庫和URL中使用冒號是不是很糟糕的形式?

id -> "e:t:222" 

,其中「E」表示事件類,「T」代表型

我也希望使用這個ID在我的網址

url -> /events/t:222 

這樣做有什麼問題嗎?

+0

我冒昧地將「分號」改爲「冒號」,因爲這似乎就是你的意思。如果不正確,請隨時回滾。 – 2010-08-23 23:37:27

回答

0

這樣做沒有問題,你只需要正確編碼URL。大多數圖書館都會爲您自動完成此操作。

一般來說,如果你關心你的數據,你不應該讓應用程序驅動數據或數據庫設計。例外情況是以應用程序爲中心的數據庫,這些數據庫在單個應用程序之外沒有生命,也不期望在其他地方使用數據。在這種情況下,您可能想要堅持最適合您的應用程序的模式和習語。

1

這樣做有什麼問題嗎?

是:冒號在URL中有reserved character,具有特殊含義,即指定URL中的服務器端口。

在URL的其他地方使用它是一個壞主意。

你需要URLEncode冒號才能使用它。

+0

這隻適用於主機部分,路徑可以包含冒號就好。 'schema:// host:port/path?query#fragment'對Rails不太確定,但CakePHP默認使用'/ name:value /'路徑來命名參數。 – deceze 2010-08-23 23:47:31

+1

@deceze你確定嗎?因爲RFC 1738說「因此,只有字母數字,特殊字符」$ -_。+!*'()「和用於其保留目的的保留字符可以在URL內未經編碼使用。 – 2010-08-23 23:50:40

+0

@deceze也可以參見http ://en.wikipedia.org/wiki/Percent-encoding#Types%5Fof%5FURI%5Fcharacters許多網站都使用它,而且我所知道的所有瀏覽器都容忍這種做法,但我會特別小心到REST網絡服務...但如果我錯了,我很樂意糾正。 – 2010-08-23 23:53:21

相關問題