對於我參與的SaaS創業公司,我在不同平臺上構建了一個REST風格的Web API和幾個客戶端應用程序。我想我已經找到了API,但現在我正在轉向客戶。正如我一直在閱讀有關REST,我看到REST的一個關鍵部分是發現,但似乎有很多爭論什麼發現的兩種不同的解釋之間的真正含義是:RESTful API運行時可發現性/ HATEOAS客戶端設計
開發發現:開發人員將大量的API詳細信息硬編碼到客戶端,例如資源URI,查詢參數,支持的HTTP方法以及他們通過瀏覽文檔並試用API響應發現的其他詳細信息。這種類型的發現恕我直言,需要冷靜的聯繫和API版本問題,並導致客戶端代碼與API的硬耦合。看起來,如果使用一個記錄良好的RPC集合,這並沒有什麼好處。
運行時發現 - (大概只有一個媒體類型與API交易的知識)的客戶端應用程序本身能夠計算出它與外的帶很少或沒有信息需要的一切鏈接可以很熱。但爲了使API非常高效,似乎需要大量用於查詢參數的鏈接模板,這使得帶外信息蠕動回來了。可能還有其他困難,我還沒有想過,因爲我沒有在開發中得到了這一點。但我確實喜歡鬆耦合的想法。
運行時發現似乎是REST的聖盃,但我看到關於如何實現這樣的客戶端的小小討論。幾乎所有我發現的REST源似乎都假定開發人員發現。任何人都知道一些運行時發現資源?最佳實踐?具有真實代碼的示例或庫?我正在爲一個客戶端開發PHP(Zend Framework)。 Objective-C(iOS)。
運行時發現是一個現實的目標,考慮到開發人員社區中現有的工具和知識集?我可以寫我的客戶端以不透明的方式處理所有的URI,但如何最有效地做到這一點是一個問題,尤其是在低帶寬連接上。無論如何,URI只是等式的一部分。運行環境中的鏈接模板怎麼樣?除了提出大量的OPTIONS請求外,如何溝通支持哪些方法?
只是稍微放在您的OPTIONS參考。您可以使用「允許」標頭在OPTIONS請求之外傳遞允許的資源操作。 Roy Fielding甚至將頭文件視爲一種超文本形式 - 參見[這裏](http://tech.groups.yahoo.com/group/rest-discuss/message/14432)。 – paulkmoore 2012-05-19 14:37:59
tats一個gr8的問題,關鍵問題給出的適用方法的列表,客戶應該能夠形成常規CRUD操作的URL或將被稱爲「帶外」?說,如果我們也爲CRUD操作提供鏈接,那麼你如何在json中做「形式」?可能是如果你使用應用程序特定的媒體類型,你不需要做「表單」,但是wat是發現媒體類型的標準方式(即json模式),發現模式的過程是否會被視爲「out-of-樂隊「爲客戶? – redzedi 2012-07-29 08:06:23
xhtml看起來非常好,流暢,但如果你必須做json,我想現在是非常不穩定 – redzedi 2012-07-29 08:07:47