2017-02-28 110 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背後的邏輯時必不可少的工具包的一部分。