【问题标题】:call web api from normal web mvc in same project从同一项目中的普通 web mvc 调用 web api
【发布时间】:2013-01-17 18:55:22
【问题描述】:

我有一个包含普通 MVC 控制器和 web api 控制器的 web MVC 应用程序。

在同一项目中从普通 MVC 控制器操作调用 Web api 控制器的正确方法是什么?

【问题讨论】:

  • 不要。相反,将其移至单独的类。
  • 这个 web api 控制器仅供普通 web 控制器使用,所以这就是我将它们放在一个项目中的原因。
  • 请不要将“ASP.NET MVC”简单地称为“MVC”。一种是框架,另一种是与语言无关的设计模式。这就像调用 IE - “互联网”

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


【解决方案1】:

ASP.Net Web API 旨在通过 HTTP 调用,而不是从您的服务器端逻辑调用。也许您呈现的演示文稿可以通过客户端请求(例如 ajax)调用您的 Web API。

如果您发现自己的 MVC 控制器操作需要执行仅在 Web API 操作中可用的代码,那么您应该考虑将该代码与您的 Web API 分离,并将其移至与平台无关的区域您的代码(服务层?)。

【讨论】:

    【解决方案2】:

    如果您只是需要一种方法将 JSON(或类似的)发送回客户端,您可以简单地选择从 MVC 控制器返回视图以外的其他内容。然后这一切都在您的 MVC Web 应用程序中处理,您无需使用 Web API。

    public JsonResult DetailsJson(int id)
    {
        Car car = carRepository.Find(id);
        return Json(car, JsonRequestBehavior.AllowGet);
    }
    

    这个例子会被调用

    /Cars/DetailsJson/3
    

    出于测试原因,请不要在示例中允许 GET(通过添加 JsonRequestBehavior.AllowGet),如果您只想支持 POST 请求,可能会将其删除。

    【讨论】:

      【解决方案3】:

      Is it an antipattern to call WEBAPI services from MVC Controllers?

      简而言之,使用 httpclient 来访问您的 api。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 1970-01-01
        • 2019-09-18
        • 2014-02-17
        • 2013-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多