2015-11-04 109 views
0

我有一個用戶身份驗證API,它返回包含一些數據的對象,包括狀態碼,例如。 200.即使證書不正確,我也會發送200狀態消息,但響應對象的狀態字段的狀態爲401,並且消息「Incorrect Credentials」。因此,我的問題是,哪種響應是正確的?即使證書不正確,我發送200狀態消息,然後在響應對象內,我必須再次檢查憑據是否正確或第二,如果憑據不正確,我發送狀態401與響應對象?用戶身份驗證響應

+1

請參閱http://stackoverflow.com/questions/1618733/signalling-authentication-failure-in-a-restful-api – Lovababu

+0

上面的鏈接中沒有用於身份驗證的API,但是我有和我不確定哪個是正確的發送回覆的方式。 –

+0

所以我的問題是,哪個迴應是正確的?這不是你的問題。 – Lovababu

回答

0

我認爲最好將它返回到HTTP標頭中。通過這種方式,客戶可以更輕鬆地知道錯誤發生了。最後它更直接。

0

最好的方法是有條件地返回標題中的http狀態和代碼。通過這種方式,用戶可以使用本地方法對響應做出反應。如果服務中出現意外錯誤,並且無法形成漂亮的響應對象,則用戶仍可以處理它,因爲響應將具有適當的HTTP狀態代碼。如果用戶總是期望你的API返回一個對象,那麼他/她在這種情況下會遇到麻煩。當然,你可以告訴他們考慮到這一點,但是用戶將不得不實施額外的邏輯來處理兩種響應。

但是:

你可以做一些像我一樣:讓用戶選擇!

我在URL中放置一個變量,告訴服務是否返回帶有正確代碼的http響應。 的URL看起來是這樣的:

/some_path/{real_http_code}/some_path_or_data 

{real_http_code}是真/假-text。如果這是真的,我們的服務知道用適當的HTTP狀態碼返回響應。如果爲false,服務將始終返回200 OK -response,並且如果出現問題,用戶必須檢查響應。 因此,URL可能看起來像這樣:

/some_path/true/some_path_or_data 

跌宕起伏:

+爲用戶提供自由選擇

- 附加邏輯必須落實到服務