gpt4 book ai didi

asp.net - 将所有 Web API 请求路由到一个 Controller 方法

转载 作者:行者123 更新时间:2023-12-04 01:02:20 25 4
gpt4 key购买 nike

是否可以自定义 ASP.NET Web API 的路由机制以将所有对 API 的请求路由到一个 Controller 方法?

如果一个请求进入

www.mysite.com/api/products/

或者
www.mysite.com/api/otherResource/7

所有都将路由到我的 SuperDuperController 的 Get() 方法?

最佳答案

我遇到了需要这样做的情况。 (网络 API 2)

我首先考虑创建自定义 IHttpControllerSelectorIHttpActionSelector s。然而,这有点模糊。所以我最终决定了这个死的简单实现。您所要做的就是设置通配符路由。例子:

public class SuperDuperController : ApiController
{
[Route("api/{*url}")]
public HttpResponseMessage Get()
{
// url information
Request.RequestUri
// route values, including "url"
Request.GetRouteData().Values
}
}

任何以“api/”开头的 GET 请求都将被路由到上述方法。这包括您问题中的上述网址。您必须自己从请求或上下文对象中挖掘信息,因为这会绕过自动路由值和模型解析。

这样做的好处是您仍然可以使用其他 Controller (只要它们的路由不以“api/”开头)。

关于asp.net - 将所有 Web API 请求路由到一个 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022637/

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