喵喔喔
2019-08-05 16:42:02
REST API錯(cuò)誤返回良好實(shí)踐在從REST API返回錯(cuò)誤時(shí),我正在尋找有關(guān)良好實(shí)踐的指導(dǎo)。我正在開發(fā)一個(gè)新的API,所以我現(xiàn)在可以采取任何方向。我的內(nèi)容類型目前是XML,但我計(jì)劃將來支持JSON。我現(xiàn)在正在添加一些錯(cuò)誤情況,例如客戶端嘗試添加新資源但已超出其存儲(chǔ)配額。我已經(jīng)使用HTTP狀態(tài)代碼處理某些錯(cuò)誤情況(401用于身份驗(yàn)證,403用于授權(quán),404用于普通錯(cuò)誤請(qǐng)求URI)。我查看了有福的HTTP錯(cuò)誤代碼,但400-417范圍似乎沒有報(bào)告特定于應(yīng)用程序的錯(cuò)誤。所以起初我很想用200 OK和特定的XML有效載荷返回我的應(yīng)用程序錯(cuò)誤(即付給我們更多,你將得到你需要的存儲(chǔ)空間?。┑俏彝O聛硭伎妓⑶宜坪跏欠试恚?聳聳肩恐怖)。此外,感覺就像我將錯(cuò)誤響應(yīng)分成不同的情況,因?yàn)橛行┦莌ttp狀態(tài)代碼驅(qū)動(dòng)而其他是內(nèi)容驅(qū)動(dòng)。那么行業(yè)建議是什么?好的做法(請(qǐng)解釋原因?。┮约皬目蛻舳藀ov中,REST API中的哪種錯(cuò)誤處理使客戶端代碼的生活更輕松?
3 回答

侃侃爾雅
TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
所以起初我很想用200 OK和特定的XML有效載荷返回我的應(yīng)用程序錯(cuò)誤(即付給我們更多,你將得到你需要的存儲(chǔ)空間?。┑俏彝O聛硭伎妓⑶宜坪跏欠试恚?聳聳肩恐怖)。
除非請(qǐng)求確實(shí)沒有任何問題,否則我不會(huì)返回200。從RFC2616,200表示“請(qǐng)求已成功”。
如果超出客戶端的存儲(chǔ)配額(無論出于何種原因),我將返回403(禁止):
服務(wù)器理解請(qǐng)求,但拒絕履行請(qǐng)求。授權(quán)無效,請(qǐng)求不應(yīng)重復(fù)。如果請(qǐng)求方法不是HEAD并且服務(wù)器希望公開為什么請(qǐng)求沒有得到滿足,那么它應(yīng)該描述實(shí)體中拒絕的原因。如果服務(wù)器不希望將此信息提供給客戶端,則可以使用狀態(tài)代碼404(未找到)。
這告訴客戶端請(qǐng)求是正常的,但它失敗了(200不能做的事情)。這也使您有機(jī)會(huì)在響應(yīng)正文中解釋問題(及其解決方案)。
你有什么其他特定的錯(cuò)誤條件?
添加回答
舉報(bào)
0/150
提交
取消