2017-02-28 111 views
1

我有两个控制器,一个mvc控制器和一个api控制器,两者都在同一个项目中。从mvc控制器消费web api控制器动作

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

如果我想消费后行动DataController类从HomeController的是有必要使用HttpClient

+4

为什么不把后动作的内容放到一个单独的类中,两个控制器都可以使用。这样就不需要涉及任何网络流量以及所有的开销。 –

回答

4

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

public class HomeController : Controller 
    { 

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

      return View(data); 
     } 
    } 
0

有一个工具,称为改装,这将帮助你在这里,它掩盖所有需要HttpClient的互动,并允许您创建可以注入到你的控制器服务,所以你可以让他们测试。 Project page for Refit

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