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

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

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

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

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

BR

【问题讨论】:

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


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2011-09-22
      • 2016-04-30
      • 2020-06-30
      • 1970-01-01
      相关资源
      最近更新 更多