rys*_*ama 4 .net c# asp.net-web-api asp.net-web-api2
我有一个WebAPI服务,我希望它向自己发送一个http请求.我想确认最合适的做法是什么样的.(通常,我只是实例化目标控制器的另一个实例或重构接口后面的代码,然后以这种方式发出请求,但由于各种原因,我不想使用该方法.)
下面的代码是否是在同一服务中向另一个控制器发出http请求的最合适方式?
using (HttpClient client = new HttpClient())
{
var httpRequest = new HttpRequestMessage("GET", "https://localhost/SomeOtherController");
return await client.SendAsync(httpRequest);
}
Run Code Online (Sandbox Code Playgroud)
如果你需要调用另一个控制器,那意味着那里有一些共享代码.最好的方法是将这段代码抽象到另一个类中,并在两个控制器中使用它.
例如:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 2
是的,这是一个合适的称呼方式。
如果您需要执行实际的 HTTP 请求,那么该请求发送到同一服务中的控制器并不重要 - 它只是一个通用的 HTTP 请求。
顺便说一句 - 您可能想要对该 URI 字符串执行一些操作,这样它就不会全部被硬编码。