2014-02-10 47 views
0

的RESTful Web服務需要一些建議對下列查詢:設計與Spring

  1. 如果用戶需要訪問特定資源,用於如:http://sample.com/user/id/profile。 然後在這種情況下如何在客戶端存儲id

  2. 是否cookie是上述問題的解決方案,如果是,那麼在cookie被禁用的情況下會發生什麼?

  3. 如何使用HTTP方法PUT和DELETE?因爲,HTML不支持它。

你們可以提供任何參考資料來設計Spring的REST風格的Web服務嗎?

感謝

+0

1.您不存儲該ID,因爲它已經存在於URL中,爲什麼要存儲它(所以2不適用)。 3.使用JavaScript,通常在編寫REST api時,這與JavaScript支持其他方法,然後只使用GET/POST結合使用。否則使用POST而不是PUT/DELETE。 –

+0

謝謝!我有一點疑問。 http://sample.com/user/id/profile將包含用戶特定的id值。例如:對於user_id = 1的用戶,url將爲http://sample.com/user/1/profile,對於id爲2的用戶,url將爲http://sample.com/user/2/profile等等。那麼,如何在不存儲ID值的情況下創建動態url? – Touchstone

回答

0

的ID是在URL中固有的,但是你提供的文件還可以包含方便的ID。您沒有提及您提供的是什麼Content-Type,但假設它是XML或JSON,則可以使用ID屬性。更好的是,客戶端應該使用URL而不是ID進行尋址。這就是HATEOAS原則的作用:提供與其他文檔鏈接的文檔,並以瀏覽網頁的方式瀏覽文檔。通常的做法是將知名組件的URL粘貼在一起,但最好說實體的URL是其ID爲。我工作的口號是「不要試圖推理URL」,這意味着客戶不應該從我們的API中解析URL,他們應該把它當作一個不透明的對象。所以當你談論「創建一個動態的URL」時,不要那麼做。您可以通過搜索URL發現資源,例如/user/[email protected],它將返回與該電子郵件匹配的用戶實體的集合。

對於RESTful解決方案中的任何內容,您都不需要依賴Cookie。有時他們很方便,出於同樣的原因,它在常規網站很方便,但你不需要cookies。如果這是一個真正的REST API,則需要記住Cookie可能會爲客戶端帶來額外的工作量。僅僅因爲Web瀏覽器神奇地處理它們並不意味着有人用C#,Java,PHP,Ruby,任何其他語言編寫客戶端,而是擁有魔術餅乾支持。然而,標準HTTP非常普遍。

HTML表單不支持PUT & DELETE,儘管現在大多數人都通過Javascript訪問REST API。如果您絕對必須支持沒有Javascript的HTML表單,您可以將操作重載到POST上 - 也就是說,如果您的資源是/ user/id/profile,則將空文檔發送到/ user/id/profile/delete或/ user/id /簡介/更新。這不是很好的做法,但如果你必須,你必須。

0

Iam不知道你是否得到了問題的答案。以下是我的想法:

如果客戶想訪問特定資源,例如:http://sample.com/user/id/profile。然後在這種情況下如何在客戶端存儲id。

  • ANS:試試你的客戶(我假設其Chrome等瀏覽器)本地存儲來保存ID

Cookie是否是上述問題的解決方案,如果是的話,那麼在Cookie被禁用的情況下會發生什麼?

  • ANS:看到上面的答案,

如何使用HTTP方法PUT和DELETE?因爲,HTML不支持它。

  • ANS:不確定的問題。