何时使用 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.AssetsController
和 MyApp.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 控制器类的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何以及何时将倾斜指针与 cuda API 一起使用?
如何知道 youtube 视频何时开始播放以及何时在 ios 的 web 视图中按下 mpmovieplayer 的完成按钮
有啥方法可以找出专辑何时被添加到 web api 的 spotify 中?
ASP.net Core RC2 Web API POST - 何时使用 Create、CreatedAtAction 和 CreatedAtRoute?