2016-08-18 71 views
6

我知道WEB API与MVC之间的区别。我也知道,在asp.net核心1.0中只有一种类型的控制器可以处理MVC和API。但是,我最近一直在观看很多ASP.NET MVC教程,并注意到教师在Controllers文件夹内创建了一个Api文件夹。何时使用API​​控制器与MVC控制器

这样,他将所有主要处理ViewModel的MVC控制器分开,并使用View函数告诉MVC从API控制器中显示哪个视图,主要处理Dtos并似乎严格处理数据,而不是视图。

你会认为在MVC应用程序中不会有API控制器吗?特别是在核心1.0中,你从一个类继承:'Controller'。但是我猜想,当你将前端框架(如Angular和Kendo UI)合并为一个Ajax请求时,你通常需要通过api来完成这些请求。

这是我目前的理解:
使用MVC控制器严格的MVC只喜欢指定功能,这视图应该显示和传递一个视图模型与它一起。

使用API​​控制器主要用于ajax调用,从不用于视图初始加载,并且从不用于MVC CRUD模式。

有人可以给我一个更好的标准,当涉及到这一点?

+2

现在,您可以在同一控制器中自由组合MVC和API操作,这主要是一个意见或设计决定。从提供数据的API控制器分离提供演示的MVC控制器听起来像是一个“分离关注点”的决定。真正由你决定如何构建事物。 – jmoerdyk

回答

7

正如您指出的那样,两者之间的.Net Core没有区别,创建一个“API”文件夹将纯粹用于项目组织,但控制器的类型相同。如果你想要一个相当简单的规则,我会说任何返回JSON/XML/data(没有表示信息)的方法都应该是一个“API”控制器,任何返回HTML的方法都应该是“MVC”控制器或不在API文件夹内。