2012-04-25 82 views
1

我打算做一個API(作爲一個Web服務)來驗證用戶輸入。用於驗證參數,REST或其他的Web服務API?

API從用戶獲取3個參數作爲輸入,檢查所有參數是否有效,然後將結果(例如:true或false)返回給用戶。

而這裏的API(我懷疑這是基於REST)的草圖:

URL: http://my.domain.com/validate/v1 (POST) 
Required parameter: param1, param2, param3 
Result: To response body (XML/JSON) or response header (HTTP status) 

但谷歌搜索API的設計和休息後我發現,什麼是錯的這個API的設計。

根據Wikipedia,請求和響應建立在資源的表示轉移周圍。但是我所做的API與資源無關。它不會CRUD任何資源。所有的API都只需要輸入,驗證它們並返回結果。而且我堅持用這個要求來設計API。

歡迎任何意見/更正此問題。

回答

2

你說得對,你的問題更適合RPC風格,但它可以很容易地映射到REST。下面是我該怎麼做:

在REST中經常使用POST方法來創建新資源。這個新資源的表示被張貼到代表相同類型資源集合的URL。如果操作成功,則返回HTTP狀態碼「201 Created」,並在休止體(與郵件中發送的消息體基本相同的消息體)中進行表示。返回的Content-Location頭顯示分配給新資源的URL。如果操作失敗,則會在消息體中使用「400錯誤請求」狀態代碼和更詳細的人類可讀錯誤說明進行信號發送。

正如您所看到的,驗證已經是這種常見REST模式的一部分。據我所知,你的情況唯一的區別是你不想在你的服務器上創建(記住)這個資源。所以不要。 REST並沒有說你必須。如果您發現它更容易,可以想象該資源確實暫時創建,但之後立即刪除。如果參數通過驗證並返回消息體中的參數,則返回狀態碼「200 OK」。否則返回「400錯誤請求」。

如果動詞「驗證」在URL中引起了您的困擾(不應該),請將URL命名爲其他內容,或許是由三個參數組成的對象的適當名稱。

希望這有助於

費倫茨·米哈伊 http://theamiableapi.com