我有一个 Asp.net Web API 项目,它有几个 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 方法中拥有的对象吗?