2012-12-26 165 views
1

我打算在我的應用程序中同時具有MVC和WebAPI功能。將會有一個管理站點使用簡單的MVC CRUD控制器實現,我還需要從遠程客戶端調用RESTful API,並且可能會在未來從單個頁面應用程序調用。 我不太習慣編寫僅在返回類型上有所不同的類 - MVC控制器返回包裝在View中的數據,WebAPI控制器僅返回數據。 在不重複太多代碼的情況下達到目標的最佳方式是什麼?WebApi和MVC控制器

回答

5

在我看來,如果你使用WebAPI,你的標準MVC控制器不應該用於CRUD。你的API控制器應該處理CRUD操作,你的MVC控制器應該返回視圖。

通過走這條路,它給你幾個不同的選擇如何,你會在你的視圖中顯示的數據:

傳統

如果你想堅持用更「傳統「路由,你可以從你的MVC控制器調用你的WebAPI控制器服務器端,爲一個模型對象提供水分並返回一個強類型的視圖。您可以通過使用HttpClient類或WebClient類來完成此API調用和反序列化響應。

單頁

如果你想嘗試更「現代」的路線,你可以嘗試danludwig建議什麼,並建立更多的單頁應用程序。在這種情況下,您的MVC控制器將返回一個HTML + JavaScript視圖,該視圖依賴於客戶端框架進行API調用並更新DOM。 require + backbone + knockback/knockout堆棧是一個很好的開始,但它確實有一點學習曲線。

無論哪種方式,你真的應該只在一個地方有CRUD邏輯,我相信這屬於API。

1

一種方法是讓你的MVC控制器不返回強類型的視圖模型。相反,他們可以返回純HTML + JavaScript,可以使用骨幹或基因敲除來調用您的Api操作方法並填充DOM。