2015-07-01 93 views
0

我正在創建一個RESTful API,允許客戶端檢查當前是否正在運行特定服務。 編輯:請求地址會是這個樣子 - /服務/ 123 /運行通過RESTful API報告服務狀態時使用什麼HTTP狀態碼?

可能的返回值是:

  1. OK(HTTP 200) - 該服務存在且正在運行
  2. 不運行(HTTP ???) - 服務存在,但它沒有運行
  3. 未找到(HTTP 404) - 服務不存在

應使用什麼我HTTP狀態代碼通知客戶該服務確實存在,但目前沒有運行?

編輯:更多的研究後,我發現,有些倒是同一主題的一個計算器的討論 - What is the appropriate HTTP status code response for a general unsuccessful request (not an error)?

回答

1

你不想使用HTTP狀態代碼這一點。他們要表明請求是如何進行的。

相反,您應該在響應正文中傳遞狀態。如果請求(檢查服務的狀態)正常,那麼HTTP狀態碼應始終爲200,唯一不同的應該是正文。

例子:

服務存在且正在運行

Status code 200 Ok 
Body {"status": "exists and running"} 

存在的服務,但它不運行

Status code 200 Ok 
Body {"status": "exists, not running"} 

的服務不存在

Status code 200 Ok 
Body {"status": "doesn't exist"} 
+0

這的確是一個辦法來解決這個問題! 與此同時,它似乎是一個很多爭論的話題 - 是否在HTTP 200內的REST答案中報告錯誤或使用HTTP狀態代碼:) –

+0

錯誤代碼爲您提供了清楚的指示。你不想分析狀態字符串來找出相同的。如果您只是向用戶吐露消息,但如果您想實際執行某項操作,那麼這不是一個好方法。 REST客戶端可能會認爲請求執行成功,但事實上並未發生任何事情,因爲該服務未運行/不存在。 – Liam

+0

@Liam在這種情況下,服務不應與處理請求的實際api相混淆 –