你如何做到這一點 系統到系統的接口?說 客戶想在http://my.server.org創建於 服務器的順序如何 它應該瞭解到,用於創建 它應該使用的URL訂單 http://my.server.org/newOrder,而不是 http://my.server.org/nO或任何其他 ?
它不學習。機器客戶通常不能「學習」。至少還沒有,我們還在天網之前。你必須「教」他們。
但關鍵是你不教他們的網址。你教他們的關係。
請考慮,在HTML中...
<a rel="order" href="http://my.server.org/newOrder"/>
和
<a rel="order" href="http://my.server.org/nO"/>
你會發現,相對是一樣的, 「訂單」,但網址並非如此。
在一個「完美」的世界裏,你的系統將有一個入口點,比如http://my.server.org/,從那裏客戶可以找到它需要知道的所有資源。
實際上,許多系統都有幾個「衆所周知的」,並且定義了入口點,客戶端可以從這些入口點開始,這只是一種權宜之計,所以客戶端並不必須從系統的根部開始。這些衆所周知的入口點暗示了供應商的承諾,即這些URL不會很快改變。他們已經很久了,服務器會很好地支持他們。
但是一旦通過入口點,您發現的任何URL都可能沒有這樣的承諾。該網址可以是隻能使用一個網址的網址。它可以針對不同的機器進行負載平衡。誰知道。但作爲服務的消費者,你真的不關心網址是什麼,你只關心關係。關係告訴你要使用的URL的詳細信息。
您的超媒體API文檔解釋瞭如何將統一界面應用到您的客戶將遇到的每個rels。客戶不能「直覺」,要麼教它。
基本上,通過教導客戶端如何瀏覽它會或可能在負載中找到的關係,它處理的是客戶端如何操作超媒體API。有效載荷包含標誌帖子以顯示方式,但服務器指定這些標誌帖子的位置。
至於多久使用它,在機器到機器的世界裏,可能不是很多。大多數系統的URL不夠大,URL變化不夠重要,客戶數量太少,以至於更換客戶端並不是一項重大負擔。所以大部分只是硬編碼。
但是,最後,你只是有壞客戶。一個REST系統可以用壞客戶端做什麼。無論如何,它無法在運行時將它們分開。
+1 - 我想在我的答案中增加一個「使用AI」選項,但我覺得這有點荒謬;)很高興你在這裏解決它。 – 2011-06-11 07:00:54