2011-08-21 59 views
1

我正在使用Spring 3 MVC(無視圖和模型,僅機器交互),REST API。
我的控制器對輸入對象執行驗證,並可能產生幾個驗證錯誤(例如:「無效的電子郵件」,「電話號碼缺失」)。
我的問題是,什麼是在我的HTTP響應對象中返回幾個錯誤描述的最好方法?假設我不能返回一個「錯誤地圖」作爲返回類型(方法已經返回響應的對象,或者是無效)對REST客戶端的Spring-MVC驗證響應

回答

0

我會建議填充對象映射到各自的錯誤,你的錯誤消息。 (例如,{「email」:「必須提供有效的電子郵件地址」})。如果你用@ResponseBody註解標記方法(並確保你的Spring MVC應用程序是mvc:annotation-driven),那麼你可以在返回那個對象之後完成驗證檢查。

通過與標記@ResponseBody你的方法,春季3將自動序列化對象JSON。然後在您的前端,您可以使用簡單的jQuery調用來解析錯誤並相應地發佈錯誤消息。

下面是這一切是如何作用於Spring 3 blog一個很好的例子。

+0

謝謝,但我想避免返回一個地圖。如何使用響應http標題呢?這意味着,加上每個錯誤作爲新的報頭(ERR _ {$ invalid_field} - > {$ ERROR_DESCRIPTION} – Meron

0

這可能是有點過時,但它是更好,如果你正在開發嚴格REST服務,使用HTTP儘可能響應代碼。如果輸入存在問題,我會在主體中返回一個包含錯誤消息數組的422。如果不是的話,我會在沒有任何東西的情況下發回200。

此外,用於創建一個新的記錄,新的映射等,我想發送回201新實體的在位置報頭中的URI引用。

+0

當你說「在身上的錯誤消息的數組」,你的意思,我的反應對象應包含一個附加陣列 – Meron

+0

響應可以包含一組有效的json對象或一組字符串對象,類似於[「你不能這樣做」,「你不能這樣做」],狀態爲422 – gotz