[英]ASP.NET Web API change request URI (Redirect to another method)
我有一個 ASP.NET 項目,其中 API 版本控制是通過 URL 版本控制實現的。 例如:
api/v1/Resource
api/v2/Resource
現在的要求是,如果用戶請求的資源在該版本中不可用,則它應該回退到以前的版本。 假設用戶想要訪問api/v2/SomeResource
但同樣不可用,則應將請求轉發到api/v1/SomeResource
。
我們可以在決定路由之前攔截每個傳入的請求並更改 RequestURI 嗎?
我曾嘗試使用DelegatingHandler來更改請求 URI,但似乎路由是在執行 DelegatingHandler 之前決定的。
protected override Task<HttpResponseMessage> SendAsync
(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
request.RequestUri = new Uri(getNewURI(request.RequestUri.AbsoluteUri), UriKind.Absolute);
return base.SendAsync(request, cancellationToken);
}
無論如何,我們可以在 Web API 最終確定路由之前更改 ReqestURI 或以任何其他方式完成這種重定向嗎?
如果您已經提前知道該路由不再存在(如果您知道要重定向到哪條路由,則必須知道),那么您可以向同一個方法添加多個路由。 否則,您將不得不調用該路由以查看它是否存在,如果它給出了 404,則您將不得不再次嘗試使用下一個,依此類推。
[HttpGet, Route("api/v2/resource")]
[HttpGet, Route("api/v1/resource")]
public IHttpActionResult YourMethod()
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.