2017-05-31 211 views
3

我想實現一個REST端點,其通用目的是驗證JSON格式的複雜實體。JSON驗證的正確名稱和http方法REST端點

因此,第一個問題是應該使用哪種HTTP方法?我們不能將GET方法放入正文中。 POST和PUT是在對數據庫進行某些更改時應使用的方法,但驗證不會做任何更改。

而第二個問題是什麼資源名稱可以適合這樣的端點?

回答

2

POST和PUT之間的主要區別在於PUT是冪等而POST不是。

所以,問題是,如果你運行兩次相同的驗證請求,你會期望有不同的結果嗎?我猜不,所以PUT可能是最好的選擇。

我想要有效地使用RESTful,其中一個約束是端點應該定位您想要處理的資源,HTTP方法指示您想要處理的資源。所以你的情況,我會親自選擇:

PUT /api/v42/validation 

由於@RomanVottner建議,你也可以通過考慮每個請求爲「新的驗證報告生成」解決這一需求,在這種情況下,POST會更合適:

POST /api/v42/validations 

無論如何,你面對的這些邊緣情況下,REST需要有點扭捏一個,因爲這需要的是CRUD世界之外。

+2

我會選擇'POST',因爲操作的語義是由API開發人員定義的。 'PUT'的語義是:「用請求發送的主體替換給定資源當前可用的狀態」。作爲驗證服務顯然不能取代當前狀態,'POST'可能更適合。一般來說,HTTP的瑞士軍刀「POST」它可以用來啓動進程而無需創建實際的資源,儘管它的用例通常侷限於典型的創建操作,但會將REST的意圖與CRUD操作相混淆。 –

+0

@RomanVottner您提出了一些要點,'POST/api/v42/validations'也可以很好地滿足OP的需求,就好像每次都會生成一個新的驗證報告。 OP會遇到其中一個REST需要稍微調整的邊緣情況;) – sp00m