2010-08-06 82 views
1

我正在開發一個RESTful服務,其中可以執行進程並提供計算結果。爲此我將流程本身建模爲資源(例如:/ processes/translate)。我想通過發送帶有附加輸入參數作爲查詢參數的GET請求來執行該過程(例如:/ processes/translate?input1 = xxxx & input2 = xxxxx)。如何在REST風格的Web服務中描述輸入參數

每個進程都有不同的輸入參數,這些輸入參數是在後端創建進程期間定義的。我的問題是我應該如何記錄或描述以機器可讀形式執行過程需要哪些輸入。例如XML。

直到現在爲止,在表示形式中整合原子:鏈接元素。我認爲可能包括XFORM可能是一個解決方案?

問候 安德烈

回答

2

我不會用GET建模。雖然這是更簡單的解決方案,但它也是(IMO)最不RESTful。我會讓客戶POST一個描述他們想要翻譯的文檔,並且你的服務將它們發回給他們可以找到答案的URI(有些翻譯可能需要一段時間)。

例(ommiting很多HTTP頭/上下文)

POST /processes/translate 
Content-Type: application/xml 
... 

<translation-request> 
    <input1 type="type1">....</input1> 
    <input2 type="type5">....</input2> 
</translation-request> 

響應:

200 OK 
Content-Location: /processes/translate/jobs/1234 
.... 
+0

感謝您的回覆。我也使用你的建議方式。我想提供兩個是執行的,一個是按照Restful Web Services Cookbook中描述的模式(通過使用GET)和一個異步執行的流程執行,就像您所描述的(使用POST)。我正在尋找一種最佳實踐,讓客戶瞭解過程所需的輸入參數以及如何嵌入這些信息,例如Atom Rrepresenation。 對不起,我的英文! – user345992 2010-08-11 12:40:18

+0

那麼協議的格式(如Atom表示)就是REST所說的可以在帶外完成的事情。真正幾乎不可能向客戶端發送機器可以解釋的東西,並以正確的格式「填補空白」。擁有wiki/FAQ /任何描述同步和異步請求的例外格式的內容只需要客戶端可用。 – Gandalf 2010-08-11 14:56:47

0

這一直是一個有趣的問題。我們有一個名爲RESTx(http://restx.org)的項目,您可以非常方便地創建RESTful web services。您可以使用Java或Python編寫自定義組件代碼,然後通過將參數集發送到服務器來創建RESTful resources,然後將其存儲。但是,每個參數集都有自己的URI,因此您可以通過訪問新參數集的URI來始終使用這些參數運行代碼。

重要的是,整個RESTful API是自動創建的。 RESTx檢查組件代碼,然後組裝API描述。我們決定以人和機器可讀的方式描述參數。你可以看到in a browserin plain JSON的例子。

我是這方面的首席開發人員,所以請隨時與我聯繫,瞭解您可能遇到的任何問題。

+0

謝謝。我會看看它。它看起來很有趣。 – user345992 2010-08-11 12:42:09

相關問題