我正在构建一个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
}
}