我有兩個控制器,一個mvc控制器和一個api控制器,兩者都在同一個項目中。從mvc控制器消費web api控制器動作
HomeController: Controller{ ... }
DataController: ApiController{ ... }
如果我想消費後行動DataController類從HomeController的是有必要使用HttpClient
?
我有兩個控制器,一個mvc控制器和一個api控制器,兩者都在同一個項目中。從mvc控制器消費web api控制器動作
HomeController: Controller{ ... }
DataController: ApiController{ ... }
如果我想消費後行動DataController類從HomeController的是有必要使用HttpClient
?
不需要。您可以直接在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);
}
}
有一個工具,稱爲改裝,這將幫助你在這裏,它掩蓋所有需要HttpClient的互動,並允許您創建可以注入到你的控制器服務,所以你可以讓他們測試。 Project page for Refit
強烈推薦此工具。我已經使用了它,並認爲它是在分離api背後的邏輯時必不可少的工具包的一部分。
爲什麼不把後動作的內容放到一個單獨的類中,兩個控制器都可以使用。這樣就不需要涉及任何網絡流量以及所有的開銷。 –