我有两个控制器,一个mvc控制器和一个api控制器,两者都在同一个项目中。
HomeController: Controller{ ... }
DataController: ApiController{ ... }
如果我想在HomeController中使用DataController中的post动作,是否需要使用HttpClient
?
答案 0 :(得分:4)
不需要。你可以在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);
}
}
答案 1 :(得分:0)
有一个名为Refit的工具可以帮助你,它掩盖了httpclient交互的所有需求,并允许你创建一个可以注入控制器的服务,这样你就可以保持它们的可测试性。 Project page for Refit
强烈推荐此工具。我已经使用了相当多的东西,并认为它是在api背后分离逻辑时必不可少的工具包的一部分。