我正在構建一個REST API來爲移動和我的SPA項目提供服務。我想將Web API
與我的ASP.NET MVC
分開。作爲解耦服務層的Web API
我該如何從我的前端ASP.NET MVC
消耗我的Web API
?
我看到這篇文章,但沒有例子Where does Web API fit in a typical n-tier architecture?。
我正在構建一個REST API來爲移動和我的SPA項目提供服務。我想將Web API
與我的ASP.NET MVC
分開。作爲解耦服務層的Web API
我該如何從我的前端ASP.NET MVC
消耗我的Web API
?
我看到這篇文章,但沒有例子Where does Web API fit in a typical n-tier architecture?。
我想你有你的前端MVC和你的Web API在同一個項目中,可能共享相同的模型對象,這是正確的嗎?
如果這是正確的,你想解耦他們,這就是我已經接近它。
首先,創建3個獨立的項目。其中一個將包含您的前端,第二個,您的Web API以及可能的數據訪問邏輯(如果需要,這甚至可能是另一個僅由Web API調用的數據訪問層項目),最後是一個通用對象定義庫。
公共對象庫除了定義可繼承的對象和接口之外,不會包含任何代碼。該項目將作爲對Web API和前端MVC項目的參考添加,並且應該很容易在您的移動開發語言中進行復制。這將您的所有應用程序以對象方式放在同一頁面上,這使您的開發任務變得更加容易。
其次,我創建了一個ApiGateway類,MVC前端用來調用Web API。該類使用反射將來自API調用的結果從我的定義庫加載到對象中。此時您也可以引入一些常見的服務器端緩存和錯誤處理。
讓我知道你是否需要進一步澄清這項技術。
您可以通過http使用HttpClient類從您的MVC應用程序中使用Web API方法。像這樣:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost/");
string actionString = string.Format("api/GetSomething/{0}?count={1}", "someId", 5);
HttpResponseMessage response = client.GetAsync(actionString).Result;
if (response.IsSuccessStatusCode)
{
// do something
}
}