2012-10-05 55 views
1

我有休息服務,我將發佈數據。使用發佈數據中的http表單元素髮布數據會更好嗎?還是最好將所有數據發佈到一個json字符串中,然後解析服務器端的字符串。有什麼理由相對於另一個方向走?休息服務發佈參數

在此先感謝。我試圖確保在體系結構上我們編碼這是最好的方式。 謝謝

回答

0

我認爲你必須使用第一個解決方案,因爲它更接近於RESTful體系結構。另外,這個解決方案是一個標準,所以你不需要做額外的事情來編碼/解碼POST參數。

0

我認爲這取決於您的數據。 如果您的數據非常平坦,鍵和簡單值之間的一一對應,那麼表單樣式提交可能是最合適的。如果你有更復雜的嵌套數據或者某種類型的數組,我會使用json方法進行滾動。我不認爲這兩個選項或多或少都是RESTful。

0

表單元素是要走的路。如果您在帖子中使用json,那麼您需要將結構傳達給客戶端。這通常是在帶外完成的(我從來沒有看到它是在帶內完成的,但我可能是錯的),這會在客戶端和服務器之間產生耦合。

當您使用表單時,帶內表單會向客戶端傳達發佈數據應該是什麼。當數據要求發生變化時,表單會發生變化,客戶可以(可能)相應地進行調整。

例如,只是說你定義你的媒體類型以下名詞:emailpasswordfirst-namelast-namedate-of-birth等你有需要emailpassword用戶創作的形式,與其他用戶可選稍後填寫的數據(通過另一種形式)。稍後,決定您希望用戶在創建帳戶時提供其名稱,以便更新表單,以便要求emailpasswordfirst-namelast-name。由於客戶已經熟悉這些名詞(並且知道哪些數據屬於每個名詞),寫得很好的客戶端將與更新後的表單兼容。如果只是發佈了json數據,那麼客戶端將無法工作,因爲他們不知道所需的json數據已經發生了變化(除非您更改媒體類型,在這種情況下,無論如何都會破壞它們)。

現在,這種方法只適用於已在媒體類型中定義的名詞。如果您要添加一個新名詞,那麼您只能使其成爲可選項(現有客戶端仍然可以使用,新客戶端可以使用新名詞),或者如果您需要使用新名詞,則需要創建一個新名詞媒體類型,只有新(或更新)的客戶才能使用。