何时使用 Web API 以及何时使用 Normal 控制器类

Posted

技术标签:

【中文标题】何时使用 Web API 以及何时使用 Normal 控制器类【英文标题】:When to use Web API and when to use Normal controller classes 【发布时间】:2013-05-28 12:47:07 【问题描述】:

我想开始为我们公司实施一个新项目,该项目是关于管理我们公司的资产,如服务器、电脑、车辆、家具等。系统的主要功能包括:-

    添加不同类型的资产。 编辑资产。 删除资产。 将资产相互关联 提供有关资产的报告和统计结果。

所以在我的项目中,我不需要像其他系统一样拥有 Web 服务——在这个阶段——需要与系统集成。并且主要是控制器类将返回 html 页面,但仅对于某些场景,例如 jQuery 自动完成,控制器类将返回 JSON 对象以显示在自动完成上。 那么我需要在我的情况下使用 Web API 吗?或者我可以实现系统而无需查看 Web API,因为我之前没有使用过 WebAPI?

第二个问题,如果我假设我目前确实需要在当前阶段使用Web API;那么我什么时候应该考虑在我的项目中使用 Web API?

BR

【问题讨论】:

【参考方案1】:

由于您的项目需要呈现 html 页面,因此首选使用 MVC 控制器,因为它们已针对向 Web 浏览器提供内容进行了优化。

但是,您可以在同一个项目中混合使用 MVC 控制器和 Api 控制器。您可以将它们放在单独的命名空间中,例如 MyApp.Mvc.AssetsControllerMyApp.WebAPI.AssetsController

这将让您在 MVC 和 WebAPI 中公开类似的 URI 路由,例如:

/assets/1      << MVC view - data rendered in html
/api/assets/1  << Web API  - Json, images, etc..

一般来说,如果您希望某人能够以 XML、JSON 等格式使用您的 API,那么请使用 Web API。如果您的操作是以视图为中心的(例如,供用户操作数据的 html 页面),那么您将需要一个 MVC 控制器。

【讨论】:

Web API 控制器可以返回任何媒体类型,包括 html。然而,MVC 控制器针对向 Web 浏览器提供内容进行了优化。【参考方案2】:

见this:使用控制器来渲染你的普通视图。 ApiController 动作只返回被序列化并发送到客户端的数据。和this。

【讨论】:

以上是关于何时使用 Web API 以及何时使用 Normal 控制器类的主要内容,如果未能解决你的问题,请参考以下文章

何时使用 WCF REST 和 WEB API

我应该如何以及何时将倾斜指针与 cuda API 一起使用?

如何知道 youtube 视频何时开始播放以及何时在 ios 的 web 视图中按下 mpmovieplayer 的完成按钮

有啥方法可以找出专辑何时被添加到 web api 的 spotify 中?

ASP.net Core RC2 Web API POST - 何时使用 Create、CreatedAtAction 和 CreatedAtRoute?

WCF 何时使用 app.config 或 web.config?