0

我需要創建一個網站,其中的一些頁面應該可以通過API從外部客戶端訪問,但我仍然想要定期MVC Razor視圖來檢索,顯示和操作相同的數據。針對API控制器創建視圖?

達到此目的的最佳方法是什麼?

更新

什麼API將不得不暴露只是數據操作。

對於網頁,我仍然希望從剃刀chtml視圖中受益,我更喜歡不會用多餘的jQ或JS污染我的視圖,也不會使用消耗數據的data-屬性。

回答

1

只需創建一個包含所需頁面的MVC項目,然後創建ApiController(來自Web API框架)作爲RESTful端點。您可以對視圖進行編程,以將API操作中的數據作爲JSON對象進行檢索,然後使用javascript進行處理。其他人可以使用相同的API操作並以其他方式使用數據。

如果您想從WebApi開始,並基於與其他人可以通過該API訪問的相同數據構建基本視圖,則可以將WebApi控制器注入到普通的MVC控制器中,然後調用其方法來獲取您需要構建ViewModel的數據。只要你的API控制器不需要在「盒子外」做任何事情,比如直接檢查Request對象,這應該可以正常工作。

更健壯的方法是創建一個處理應用程序所有業務邏輯的「管理器」層,然後讓您的ApiController成爲圍繞對其各自管理器類的調用的簡單包裝。這會增加一點維護成本,但它會更好地遵守單一責任原則。

+0

這就是我的問題,是否可以從世界,web api和MVC視圖(不與js等消費)中受益。我喜歡保持我的觀點儘可能地貧窮和乾淨。 – Shimmy

+1

@Shimmy:我瞭解你不想構建使用AJAX等的富客戶端界面嗎?你只想擁有一個WebApi,並基於其他人可以通過該API訪問的相同數據來構建基本視圖?可以想象,你可以將WebApi控制器注入到普通的MVC控制器中,並調用它們的方法來獲取構建ViewModel所需的數據。 – StriplingWarrior

+0

@StripingWarrior,我讀了你的評論。這就是我要做的!這就是答案,請更新你的帖子。 – Shimmy

0

最簡單的方法就是使用MVC。

您還可以在一個站點中結合使用MVC + WebAPI。

第一個選擇的原因是簡單,學習維護一個框架和一組抽象。

但是,如果您有以下任何需求,添加Web API會變得很有趣: 1.您希望針對響應類型(對於同一操作說XML或Json)進行內容協商。 2.您想要支持CORS 3.您需要API的幫助頁面。 4.你想用你的API來構建你的API的空間,以休息和資源爲中心(基本上是GET/resource而不是/ resource/GetData)。 5.更容易單元測試控制器和操作。

這兩個框架都是由同一個團隊構建的,它們都支持屬性路由和許多類似的概念,並且兩者都可以很好地協同工作。我看到人們成功地採取了兩種方法。另請注意,Visual Studio有模板,它們將兩者結合在一起。

相關問題