簡體   English   中英

ASP.NET Web API 更改請求 URI(重定向到另一種方法)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM