让WebAPI控制器向同一服务中的另一个控制器发送http请求

本文关键字:控制器 另一个 http 请求 服务 WebAPI | 更新日期: 2023-09-27 18:17:02

我有一个WebAPI服务,我希望它向自己发送一个http请求。我想确认一下做这件事最合适的方式是什么。(通常,我会实例化目标控制器的另一个实例或重构接口后面的代码,然后以这种方式发出请求,但由于各种原因,我不想使用该方法。)

下面的代码是最合适的方式,使http请求不同的控制器在同一服务?

using (HttpClient client = new HttpClient())
{
  var httpRequest = new HttpRequestMessage("GET", "https://localhost/SomeOtherController");
  return await client.SendAsync(httpRequest);
}

让WebAPI控制器向同一服务中的另一个控制器发送http请求

如果您需要调用另一个控制器,这意味着那里有一些共享代码。最好的方法是将这段代码抽象到另一个类中,并在两个控制器中使用它。

,

public class SomeService
{
 public void DoSomeLogic()
 { 
 }
}
public class FirstController : ApiController
{
 public IHttpActionResult SomeAction()
 {
   new SomeService().DoSomeLogic();
 }
}
public class SecondController : ApiController
{
 public IHttpActionResult SomeOtherAction()
 {
   new SomeService().DoSomeLogic();
 }
}

是的,这将是一个合适的命名方式。

如果你需要做一个实际的HTTP请求,那么请求发送到同一服务中的控制器并不重要-它只是一个通用的HTTP请求。

附带说明—您可能希望对URI字符串做一些事情,以便它不是全部硬编码。