最近我开始学习.Core MVC和WEB api。我发现Web Api的功能类似于MVC,那么为什么在所有MVC情况下我们都不能使用API代替MVC
例如用于从DbContext _dbcontext返回Pie列表 代码:
Public IAction Index()
{
var PiesCollection=_dbcontext.Pies.ToList();
return View(PiesCollection);
}
我们为什么不能从视图中使用AJAX来调用GetPies api并将其替换为
,而不是将PiesCollection返回到视图中?public IAction GetPies()
{
return JsonResult(_dbcontext.Pies.ToList());
}
答案 0 :(得分:1)
没有什么可以阻止您这样做的,但是,这带来了在前端进行更多工作的弊端,如果您不小心的话,可能会对用户产生一些令人讨厌的副作用。
您不是在发送HTML到浏览器之前完成构建HTML的所有工作,而是向他们发送不完整的HTML,其中留有用于“未来”内容的空白。然后页面必须请求此丢失的内容。该服务必须执行与收集数据之前相同的所有工作,但是现在必须对其进行序列化以发送到浏览器。然后浏览器必须解析该内容以构建UI。
这可能意味着前端不再与您的数据耦合,因此您可以将其缓存或托管在其他服务器上,因为它不需要其中的所有逻辑。这就是某些移动应用程序甚至工作的方式。前端不再是一个网站,而是一个iOS或Android应用程序,它从asp.net服务获取所有数据。
但是缺点是,如果UI很大程度上受该服务返回的数据的驱动,那么您的用户就必须等待浏览器/应用程序获取响应,将其解析并呈现到屏幕上。当页面的内容随着数据加载而移动或更改时,这可能对用户特别恼火。