我設計我的命名空間,使得我在DB存儲ID是在數據庫和URL中使用冒號是不是很糟糕的形式?
id -> "e:t:222"
,其中「E」表示事件類,「T」代表型
我也希望使用這個ID在我的網址
url -> /events/t:222
這樣做有什麼問題嗎?
我設計我的命名空間,使得我在DB存儲ID是在數據庫和URL中使用冒號是不是很糟糕的形式?
id -> "e:t:222"
,其中「E」表示事件類,「T」代表型
我也希望使用這個ID在我的網址
url -> /events/t:222
這樣做有什麼問題嗎?
這樣做沒有問題,你只需要正確編碼URL。大多數圖書館都會爲您自動完成此操作。
一般來說,如果你關心你的數據,你不應該讓應用程序驅動數據或數據庫設計。例外情況是以應用程序爲中心的數據庫,這些數據庫在單個應用程序之外沒有生命,也不期望在其他地方使用數據。在這種情況下,您可能想要堅持最適合您的應用程序的模式和習語。
這樣做有什麼問題嗎?
是:冒號在URL中有reserved character,具有特殊含義,即指定URL中的服務器端口。
在URL的其他地方使用它是一個壞主意。
你需要URLEncode冒號才能使用它。
這隻適用於主機部分,路徑可以包含冒號就好。 'schema:// host:port/path?query#fragment'對Rails不太確定,但CakePHP默認使用'/ name:value /'路徑來命名參數。 – deceze 2010-08-23 23:47:31
@deceze你確定嗎?因爲RFC 1738說「因此,只有字母數字,特殊字符」$ -_。+!*'()「和用於其保留目的的保留字符可以在URL內未經編碼使用。 – 2010-08-23 23:50:40
@deceze也可以參見http ://en.wikipedia.org/wiki/Percent-encoding#Types%5Fof%5FURI%5Fcharacters許多網站都使用它,而且我所知道的所有瀏覽器都容忍這種做法,但我會特別小心到REST網絡服務...但如果我錯了,我很樂意糾正。 – 2010-08-23 23:53:21
我冒昧地將「分號」改爲「冒號」,因爲這似乎就是你的意思。如果不正確,請隨時回滾。 – 2010-08-23 23:37:27