2017-03-31 57 views
0

我有一種情況,有時候我們的數據庫中的數據不足以處理請求(即我們需要一個帳號或者沒有填充的東西)。糟糕的預先存在的數據的RESTful響應代碼?

如果用戶的請求包含無效的語法,這將會是一個400 如果數據庫下降,或服務失敗了,這將會是一個500,502,503或

我m考慮422,這基本上意味着「請求沒有格式錯誤,但是請求的語義導致錯誤」。這裏的問題是,它不是請求本身固有的東西,而是我們預先存在的數據的狀態。

回答

1

您詳細描述的行爲是服務器錯誤。因此,應使用5xx響應代碼而不是4xx(代表客戶端錯誤)。現在在5xx系列中的響應代碼;雖然似乎沒有任何響應代碼正確定義您的服務器行爲,但500內部服務器錯誤似乎是最接近的。看看在這裏的rfc:https://tools.ietf.org/html/rfc2616#section-10.5.1

這也取決於你正在做你的服務和哪個資源的操作。

0

我可以看到你爲什麼會使用422並同意這一點。
但是,我想知道是否有一個優雅的方式仍然完成沒有數據的請求?也許響應發生,但可用的功能等降級。 如果沒有,那麼您是否可以防止在要求的數據可用之前公開該功能? IE瀏覽器。例如,該人登錄並具有有效的會話ID。

+0

沒有。在一個表中沒有ID的情況下,無法對其他服務進行後續調用。 –

+0

好的,那麼是的,500的迴應將是最好的選擇。 – cigloo