提问人:Shire 提问时间:10/15/2023 最后编辑:marc_sShire 更新时间:10/18/2023 访问量:24
如何在 ASP.NET Core 6 Web API 中路由 URL 参数值而不是 URL 路径值?
How to route through URL parameter values instead of URL path values in ASP.NET Core 6 Web API?
问:
在客户端,我只能从 Web API 请求 URL 地址,但我需要提供许多不同的逻辑。
因此,我的 Web API URL 是
http://exampleDomain.com/ControllerDemo/HubActions?ActionName=(This url in client can't change)
当请求 url 为
http://exampleDomain.com/ControllerDemo/HubActions?ActionName=ActionA
它应该被路由到/ControllerDemo/ActionA
当请求 url 为
http://exampleDomain.com/ControllerDemo/HubActions?ActionName=ActionB
它应该被路由到/ControllerDemo/ActionB
答:
0赞
Shire
10/15/2023
#1
在您的 ():Program.cs
ImplicitUsings
只需在之前添加自定义中间件,如下所示:app.UseRouting()
app.Use(async (context, next) =>
{
if (context.Request.Path == "/ControllerDemo/HubActions")
context.Request.Path = $"/ControllerDemo/{context.Request.Query["ActionName"]}";
await next(context);
});
app.UseRouting();
请参阅 MSDN 文档:
如果选择了端点,则可以从 中检索。可以检查其特性。端点对象是不可变的,创建后无法修改。最常见的端点类型是 . 包括允许路由系统选择它的信息。
HttpContext
RouteEndpoint
RouteEndpoint
评论