我知道WEB API和MVC之间的区别。我也知道在asp.net core 1.0中只有一种类型的控制器可以同时处理MVC和API。
但是,我最近一直在观看很多ASP.NET MVC教程,并注意到教师在Controllers文件夹中创建了一个Api文件夹。
通过这种方式,他拆分了主要处理ViewModel的所有MVC控制器,并使用View函数告诉MVC从主要处理Dtos的API控制器显示哪个视图,并且似乎严格处理数据,而不是视图。
你会认为在MVC应用程序中不会有API控制器吗?特别是因为在核心1.0中你继承了一个类:' Controller'。但我想当你整合像Angular和Kendo UI这样的前端框架时会产生大量的ajax请求,你通常希望通过api来完成它们。
以下是我目前的理解:
严格地使用MVC控制器仅用于MVC,例如指定应显示哪个视图以及将视图模型与其一起传递。
主要用于ajax调用的API控制器,从不用于视图初始加载,从不用于MVC CRUD模式。
有人可以给我一个更好的标准吗?
答案 0 :(得分:11)
正如您所指出的,两者之间的.Net Core没有区别,并创建了一个" API"文件夹纯粹用于项目组织,但控制器的类型相同。
如果你想要一个相当简单的规则,我会说任何返回JSON / XML /数据(没有表示信息)的方法应该是一个" API"控制器,任何返回HTML的东西应该是" MVC"控制器或不在API文件夹内。