Nil*_*Pun 137 asp.net-mvc json asp.net-web-api
我正在构建一个客户端脚本很重的ASP.NET MVC应用程序,它将使用JSON和jQuery来操作DOM.
我的理解是Web API Controller和MVC Controller都可以返回JSON.
鉴于我的场景,我应该使用Web API控制器还是MVC控制器?
Sha*_*son 155
Web API控制器可以在任何ASP.NET应用程序中创建和托管,而不仅仅是MVC应用程序.因此,创建Web API的一个明显原因是,如果您没有MVC前端(例如,您的公司/组织托管的经典,RESTful Web服务).
MVC控制器通常依赖于MVC框架,如果您查看默认模板以及社区和您的同行完成的大部分工作,您会注意到几乎所有MVC控制器都是在考虑View的情况下实现的.
就个人而言,当我打算用View()响应时,我使用MVC控制器,并且我将使用Web API来处理任何不依赖于特定视图的东西.
当然有一些警告,但一般来说,如果你不需要MVC的Model Binding行为,你的服务是以数据为中心的,而操作是以数据为中心的(例如CRUD操作),那么你可能想要一个'Web API Controller '而不是'模型 - 视图控制器'.相反,如果您的操作是以视图为中心的(例如,向用户提供用户管理页面),或者您需要MVC的模型绑定来生成'ajax partials'(非常不可能),那么您将需要一个MVC控制器.
就个人而言,我使用Web API控制器来驱动基于JSON的RESTful客户端,我使用MVC控制器来处理基本的浏览器路由和SPA的交付.
Muh*_*han 31
WebAPI用于制作API.如果您希望某人能够以XML,JSON等方式使用您的API,您可以创建一个Web api.
在您的情况下,您只需要与JSON中的客户端交谈.
即使您的网站主要是客户端脚本驱动,您仍然会使用ASP.NET MVC控制器吗?并且由于您可能已经基于实体在逻辑上划分了控制器,因此在其中添加这些json服务方法是有意义的,而不是专门为web api创建另一个类.
因此,对于您的特定情况(如果我理解正确),我会坚持使用控制器.
小智 7
答案归结为分离关注点,加强服务的创建以及依赖惯例而不是配置.
控制器的主要职责是作为视图和模型之间的协调者,但API的主要职责是处理数据.在API的约定的情况下,使执行CRUD操作变得非常容易.下面是CRUD操作和HTTP操作之间的映射
因此,使用API,您不必创建单独的操作,并使用HTTP操作对其进行归因.