本質上,我發現在這個話題上有很多意見,但沒有一個讓我相信什麼是正確的。更具體地講,我有以下問題:什麼是WebAPI2中正確的RESTful實現?
單數還是複數或兩者
是否有甚至一個正確的和錯誤的方式?
標準和慣例存在的原因,我不相信我永遠不會滿足 - 這只是一個品味問題。沒有任何指導原則或標準嗎?沒有權限完成Fieldings的工作?
什麼IHttpActionResults返回?他們應該包含什麼?
- Get - return Ok();
- Post - return Created();
- 說 - 回報(放好吧?)
- 刪除 - 回報(刪除好吧?)
什麼中創建(位置)返回?
假設控制器路由 'API/V1 /模型',它應該是
- '/ {ID}'?
- 'api/v1/model/{id}'?
- 'http://www.mywebapi.com/api/v1/model/ {id}'?
我問這些問題是因爲我經常遇到關於如何最好地實現API的衝突。
+1這是一個很好的問題。當你說「假設控制器路由是'api/v1/model'時,你能詳細說明你的意思嗎?它應該是」.. etc控制器路由從域(www.mywebapi.com/)開始,所以有什麼區別選項nr 2和nr 3之間? –
'Created()'方法中的'location'參數應該是對當前_item_權限的引用?我認爲2和3之間的區別應該是顯而易見的。 #2將假定API消費者本身將爲URL的正確部分提供,#3 - 將返回完整和完整的URL。據我所知,'location'參數只是一個純字符串,並沒有_「。NET-auto-complete-route-to-url-conversion-thingie」。 – Marcus
好吧,現在我明白了。當你閱讀這個問題時,「Created(location)」行代表它自己。您應該刪除換行符或重寫它們。好問題,但如果API是從不同的域消耗,那麼我會返回完整的URL。 –