У меня есть проект веб-API Asp.net, который имеет несколько методов CRUD.
В дополнение к этим методам, я хочу добавить службу авторизации, которая читает заголовок Authorization
и запрещает пользователям доступ к ресурсам (если они не авторизованы).
// Method on internal IP Project
public class InternalController : ApiController
{
public void Create(CreateRequest request)
{
// implement the method
}
}
// Method on public IP Project
public class ExternalController : ApiController
{
public async Task Create(CreateRequest request)
{
// validate Authorization header and throw exception if not valid
using (HttpClient client = new HttpClient())
{
string parameters = string.Format("param1={0}¶m2={1}", request.Param1, request.Param2);
client.BaseAddress = new Uri("http://192.168.1.1/");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync("api/internal/create?" + parameters);
response.EnsureSuccessStatusCode();
}
}
}
Есть ли способ "перенаправлять" запрос от внешнего API во внутренний API более легко?
В настоящий момент мне нужно вручную заново создать все параметры, которые я получаю в ExternalAPI, и отправить их в InternalAPI, даже если они совпадают.
Могу ли я сделать HttpClient
автоматически отправить объект HttpRequestMessage (Request)
, который у меня есть в методе ExternalAPI?