gpt4 book ai didi

c# - ASP.NET Web API 更改请求 URI(重定向到另一种方法)

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:23 24 4
gpt4 key购买 nike

我有一个 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()
{

}

关于c# - ASP.NET Web API 更改请求 URI(重定向到另一种方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33346843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com