如何在.Net Core 2.1
中的每条路线之前替换自定义占位符
例如{serverkey}
[Route("api/{serverkey}/[controller]")]
[ApiController]
[AuthorizationFilter]
public class MonitoringController : Controller
{
// Code...
}
我希望每个url都像api/key/Monitoring/Action
。所以我需要在每个请求/路由中替换密钥。
因此,在每个请求映射到此控制器之前,基本上有任何方法可以替换占位符{serverkey}
或类似的{serverkey:key}
甚至[serverkey]
。
我知道有一种方法可以像[controller]
被.net core
自动替换一样,但我找不到它
提前谢谢。
我可以使用IRouteTemplateProvider 创建自定义route
public class CustomRouteAttribute : Attribute, IRouteTemplateProvider
{
string serverKey = string.Empty;
public CustomRouteAttribute()
{
string serverKey = "Your Key";
}
public string Template => $"api/{serverKey}/[controller]";
public int? Order { get; set; }
public string Name { get; set; }
}
它会在每次route
之前为您的密钥做准备。
用法:将其用作controller
上的attribute
//[Route("api/[controller]")]
[CustomRoute]
[ApiController]
public class DemoController : ControllerBase
{}
对于示例:
http://localhost:52264/api/Controller/Action
将变为http://localhost:52264/api/Yourkey/Controller/Action