【问题标题】:Consuming web api controller action from mvc controller从 mvc 控制器使用 web api 控制器操作
【发布时间】:2017-02-28 09:38:38
【问题描述】:

我有两个控制器,一个 mvc 控制器和一个 api 控制器,都在同一个项目中。

HomeController: Controller{ ... }
DataController: ApiController{ ... }

如果我想在 HomeController 中使用 DataController 中的 post 操作,是否需要使用 HttpClient

【问题讨论】:

  • 为什么不将发布操作的内容放入一个单独的类中,然后两个控制器都可以使用它。这样就不需要涉及任何网络流量,以及所有的开销。

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


【解决方案1】:

不需要。您可以直接在 HomeController 中创建 DataController 对象的对象,并使用它的 post 方法,如 .Net 中的实例方法。

public class HomeController : Controller
    {

        public ActionResult GetResult()
        {
            MyApp.DataController dataController = new MyApp.DataController();
            var data = dataController.Post("arguments");

            return View(data);
        }
    }

【讨论】:

    【解决方案2】:

    这里有一个名为 Refit 的工具可以帮助您,它掩盖了对 httpclient 交互的所有需求,并允许您创建一个可以注入到控制器中的服务,这样您就可以保持它们的可测试性。 Project page for Refit

    强烈推荐这个工具。我已经使用了很多次,并且认为它是分离 api 背后的逻辑时必不可少的工具包的一部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 2014-06-01
      • 1970-01-01
      • 2019-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      相关资源
      最近更新 更多