2014-09-05 183 views
1

我有一個驗證名稱的服務,可用於檢查用戶名是否正確。它看起來是這樣的:驗證請求的HTTP響應

POST http://names.myservice.com/validate 
content-type: application/json 
{"name": "Abdul Hideo McDodgycharacter¬§(*&^$%£!"} 

=> 200 OK 
{"errors": "contains invalid characters"} 

因此服務點是檢查提出的用戶名的有效性,還檢查我的數據庫,看看是否它已經被佔用。我的問題是:如果有驗證錯誤,應答碼是否應該是400 (Bad Request)

如果我正在構建一個用戶API來創建用戶,這就是我在與Abdul在這裏展示時所要做的,但我不是。在這種情況下,請求用於驗證,輸入數據是可接受的,並且響應包含請求的表示,這是所提供數據的錯誤列表,因此200 OK感覺正確。 A 400將表明我的驗證請求格式錯誤,並且無法識別要驗證的數據。

我意識到這不是非常RESTful,因爲「驗證」基本上是一個動詞,所以如果有另一種方法來解決我的查詢,請建議!

回答

3

如果驗證請求成功,則200 (OK)是正確的響應代碼。至於端點,您可以考慮

POST /validated-names 
+0

如果驗證失敗會怎麼樣?我建議'200'也是適當的,因爲驗證請求是成功的。 – Conan 2014-09-05 17:32:36

+0

對不起,我的意思是「執行驗證的請求已成功執行,無論輸出如何」。 – 2014-09-05 17:45:37