我有两个控制器,一个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背后的逻辑时必不可少的工具包的一部分。
为什么不把后动作的内容放到一个单独的类中,两个控制器都可以使用。这样就不需要涉及任何网络流量以及所有的开销。 –