asp.net-mvc - ASP.NET MVC 中 ApiController 和 Controller 的区别

标签 asp.net-mvc asp.net-web-api

我一直在使用 ASP.NET MVC 4 beta,现在看到两种类型的 Controller :ApiControllerController

我对在什么情况下可以选择特定 Controller 有点困惑。

例如:如果我想返回一个 View ,那么我必须使用 ApiController 还是普通的 Controller?我知道 WCF Web API 现在已与 MVC 集成。

现在我们可以使用这两个 Controller 了,请问有人可以指出哪些情况应该使用相应的 Controller 吗?

最佳答案

使用 Controller 渲染您的普通 View 。 ApiController 操作仅返回序列化并发送到客户端的数据。

<强> here is the link

引用:

Note If you have worked with ASP.NET MVC, then you are already familiar with controllers. They work similarly in Web API, but controllers in Web API derive from the ApiController class instead of Controller class. The first major difference you will notice is that actions on Web API controllers do not return views, they return data.

ApiController 专门用于返回数据。例如,它们负责将数据透明地序列化为客户端请求的格式。此外,它们默认遵循不同的路由方案(如:将 URL 映射到操作),按惯例提供 REST-ful API。

您可能可以使用 Controller 而不是 ApiController 以及一些(?)手动编码来执行任何操作。最后,这两个 Controller 都构建在 ASP.NET 基础上。但如今拥有 REST 式 API 已成为一项常见要求,因此创建 WebAPI 是为了简化此类 API 的实现。

在两者之间做出决定相当简单:如果您正在编写基于 HTML 的 Web/Internet/Intranet 应用程序 - 也许偶尔会出现 AJAX 调用到处返回 json - 坚持使用 MVC/Controller。如果您想向系统提供数据驱动/REST 接口(interface),请使用 WebAPI。当然,您可以将两者结合起来,让 ApiController 满足来自 MVC 页面的 AJAX 调用。

举一个现实世界的例子:我目前正在使用一个 ERP 系统,该系统为其实体提供 REST-ful API。对于这个 API,WebAPI 是一个不错的选择。同时,ERP 系统提供了高度 AJAX 化的 Web 应用程序,您可以使用它为 REST-ful API 创建查询。 Web 应用程序本身可以实现为 MVC 应用程序,利用 WebAPI 获取元数据等。

关于asp.net-mvc - ASP.NET MVC 中 ApiController 和 Controller 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494966/

相关文章:

javascript - 如何从日期时间字段中提取月份?

html - 如何在标准 html 中显示文本

c# - 使用 RestSharp 和 WebAPI 进行数据流传输

.net - JSON 序列化需要很长时间

c# - DNN Jwt 授权请求无法从 C# 桌面应用程序运行

c# - 如何在 ASP.NET MVC View 中返回当前操作?

c# - 使用 SessionStateBehavior.ReadOnly 写入 session 变量

asp.net-mvc - Azure Web 角色启动时 Application_Start 循环

asp.net-web-api - 如何读取 Controller 构造函数中的 header

rest - 对各种请求/响应类型重用DTO以及要求/应返回的内容的明确性