2015-07-20 68 views
2

我有一個圖的領域模型。當用戶嘗試修改它時,會執行循環檢查並返回相應的http響應代碼。我應該爲純驗證API方法返回什麼Http響應代碼?

但是,我們希望在客戶端上構建一個建議的更改,並檢查它是否對圖的當前狀態有效。

代碼很簡單。只是讓用戶POSTgraphChangesToValidate一些驗證方法和我的後端服務,它已經這樣做了工作,可以確認它是否將是確定進行更改...

我的問題是什麼HTTP狀態代碼(s)我應該在這種情況下返回

200意味着建議的更改通過驗證。對於失敗,我不知道400是否合適,因爲請求格式正常,服務器只是說「我瞭解您的請求,答案是否定的。」

我在想,只要驗證方法完成,我應該返回一個200與內容中的truefalse布爾值。

有沒有更標準的方法來處理這個問題?

+0

實現此目的的一種很酷的方式是發送更改的POST,然後服務器可以返回HTTP 100(繼續),如果驗證正常,則客戶端可以發送最終的提交消息。這將避免不同的呼叫來進行更改。如果圖表更改無效,服務器可能會返回409,如@sanpaco – Edgar

+0

@Edgar所述,這是一個有趣的想法,但'HTTP 100'的想法似乎不可靠? – Matthew

+0

我想這取決於如果你考慮這兩個階段的方法單個無狀態事務或兩個單獨的有狀態事務。看起來像我的語義。在我看來,RESTful API的價值來自無狀態,我認爲HTTP 100只是一個稍微複雜一點的請求 - 就像任何分塊表單上傳一樣。 – Edgar

回答

2

狀態碼通常不會提供關於內容的信息,而只是根據協議(或不是)請求/響應成功。

A(200)狀態代碼是HTTP頭的一部分,你說的回合聽起來像消息內容給我。

話雖如此,只要服務器和客戶端同意如何處理它,就可以使用/濫用它。但是最好有一些對其他開發者有意義的有用信息(以及一些API文檔)。

1

答案是......也許。我個人通常在響應中使用了200以及其他詳細信息,例如錯誤代碼以及哪些驗證步驟失敗的詳細信息。有400個範圍內的http代碼也可以適用於驗證錯誤。

檢查這個問題出來就可以了一些很好的意見和討論:Is returning HTTP 409 appropriate for a validation check?

我認爲,一般只要請求被適當地格式化並收到一個200碼應該使用,然後業務邏輯是什麼處理驗證錯誤。如果格式錯誤,則可以使用HTTP錯誤作爲響應。

相關問題