Given a controller Proxy
and an action of GetInformation
. I want to be able to call the method GetInformation
of the Users
c
You should do something like this in your UsersController
public HttpResponseMessage GetInformation(InformationRequest request)
{
HttpResponseMessage resp ;
resp = UserBusinessLogic.GetInformation(request) ;
return resp ;
}
and from your ProxyController you can resuse that "UserBusinessLogic" method to obtain the same information using the same code snippet.
Another way can be:
IQueryable<Users> GetInformation()
without using the IHttpActionResult return type. Your method will still remain an Http GET method and then call it in the same way as you call any class method.
For those wanting to solve this API to API method in different controllers, we have found a solution that works. The initial attempt was close, just missing a few things.
var controller = new UserAccountController
{
Request = new HttpRequestMessage(HttpMethod.Post, Request.RequestUri.AbsoluteUri.Replace("/current/route", "/route/to_call"))
};
controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = new HttpConfiguration();
return controller.GetInformation(request);
In doing this it allows construction of the target controller and direct invocation of the method desired. The biggest complexity here is the Uri adjustment.