2008-09-29 32 views
3

使用全局唯一URI(如REST所做的)而不是使用專有的id格式引用資源的好處是什麼?全局資源URI(即可尋址性)的好處是什麼?

例如:

  1. http://host.com/student/5
  2. http://host.com/student?id=5

在第一方法中的整個URL是ID。在第二種方法中,只有5是ID。第一種方法比第二種方法有什麼實際好處?

爲什麼REST(似乎)不會主張第一種方法?

- 編輯:

我的問題是混亂的,因爲它確實問了兩個獨立的問題:

  1. 什麼是尋址功能的好處?
  2. 上面看到的兩種URI形式有什麼區別。

我已經使用自己的帖子回答了以下兩個問題。

+0

「爲什麼REST會熄滅......?」 - 你能在這裏詳細說明嗎?這確實是一個完美的資源,你可以輕鬆地對它進行GET,DELETE和POST。你會對/ student /添加一個。什麼是問題? – Till 2008-09-29 01:54:32

+0

http://www.infoq.com/articles/mark-baker-hypermedia寫着「超媒體的解決方案就是使用標準化的標識符 - URI的,爲Web - 而不是專有的,從而避免了Flickr的專有知識的需要[ ...]「 雖然我記得在其他地方閱讀了更多。 – Gili 2008-09-29 02:05:30

回答

1

我會回答我的問題:

1)爲什麼是URI的重要?

我會從REST Web服務由倫納德·理查森和Sam Ruby(ISBN:978-0-596-52926-0)引述

考慮一個真正的URI,在名稱的資源流派「資源目錄約 水母」:http://www.google.com/search?q=jellyfish。這種水母搜索就像 一樣真實的URI,如http://www.google.com。如果HTTP不可尋址,或者Google搜索引擎不是可尋址的Web應用程序,那麼我將無法在書中發佈該URI。我必須告訴你:「打開一個到google.com的網絡連接,在搜索框中鍵入'jellyfish' ,然後點擊'Google搜索'按鈕。

這不是學術上的擔心。直到20世紀90年代中期,當ftp:// URIs 因在FTP站點上描述文件而變得流行時,人們必須編寫 這樣的內容:「在ftp.example.com上啓動一個匿名FTP會話。然後 更改爲目錄pub/files /並下載文件file.txt。「將URI作爲 作爲HTTP尋址。現在人們只寫:「下載ftp:// ftp.example.com/pub/files/file.txt」。步驟相同,但現在它們可以通過機器執行。

[...]

可尋址性是Web應用程序最好的事情之一。它使得客戶能夠以原始設計師從未想象的方式使用網站。

2)什麼是可尋址性的好處?

跟隨服務器提供的URI比自己構建它要容易得多。由於資源關係變得太複雜而無法用簡單的規則來表達,因此尤其如此。在服務器中編寫邏輯比在衆多客戶端中重新實現它更容易。

即使單個資源URI保持不變,資源之間的關係也可能會發生變化。例如,如果Google地圖要更改其地圖切片的比例,則計算相對切片位置的客戶端將會中斷。

3)URIs比自定義ID有什麼好處?

自定義ID唯一標識資源。通過告訴你在哪裏找到URI,URI更進一步。這簡化了客戶端邏輯。

0

主要是搜索引擎優化。

這也使他們更容易記住,更清潔,更專業在我看來。

+0

不再SEO必然爲真,根據谷歌 - http://googlewebmastercentral.blogspot.com/2008/09/dynamic-urls-vs-static-urls.html但我絕對與你的第二句:-) – HoboBen 2008-09-29 13:48:44

0

第一種更美觀。

從技術上講沒有區別,但可以使用前者。

-1

我認爲這要歸結爲你想堅持風水的原則。

0

正如Ólafur所說,前網址的清晰度是一個好處。

另一個是實施靈活性。

假設學生5不經常變動。如果您使用REST風格的URL,則可以選擇提供靜態文件而不是運行代碼。在Rails中,對學生/ 5的第一個請求會在你的web根目錄下創建一個緩存的html文件。該文件用於服務後續請求而不涉及後端。自然,這種方法沒有具體的軌道。

後面的網址不允許這樣做。靜態頁面的名稱中不能包含url變量(?,=)。

0

從REST的角度來看,這兩個URI都是有效的,但只是意識到Web緩存對查詢字符串參數的處理方式非常不同。
如果您想使用緩存來獲得優勢,那麼我建議您不要使用查詢字符串參數來標識您的資源。