You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 5中如何将多路由路径合并到单个Route特性并实现动态URL路径获取

.NET Core 5 合并路由特性并获取动态路径值

嘿,我来帮你搞定这个API路由的问题!首先得明确:你想直接用逗号把两个路径塞进单个[Route]特性的写法(比如[Route("customPath,anotherCustomPath")])是行不通的,因为路由模板不识别这种格式。不过我们有更靠谱的方式实现你的需求——用路由参数+正则约束,既能把两个路径合并到单个[Route]特性里,还能轻松拿到请求的具体路径值。

直接上可运行的代码示例:

[Route("{routeSegment:regex(^customPath$|^anotherCustomPath$)}")]
public IEnumerable<string> Get([FromRoute] string routeSegment)
{
    // 这里的routeSegment就是请求的路径值:"customPath" 或者 "anotherCustomPath"
    return new string[] { "value1", "value2", $"当前匹配的路由:{routeSegment}" };
}

给你拆解下这个写法的逻辑:

  • {routeSegment}:定义一个路由参数,用来捕获请求路径中的这个分段内容
  • :regex(^customPath$|^anotherCustomPath$):给这个参数添加正则约束,限定它只能匹配customPath或anotherCustomPath这两个值,确保只有这两个路径能命中这个Action
  • [FromRoute] string routeSegment:通过这个特性将路由参数绑定到方法参数,这样你就能在代码里直接使用这个动态路径值了

如果你的API有固定前缀(比如api/),只要把前缀加到路由模板里即可:

[Route("api/{routeSegment:regex(^customPath$|^anotherCustomPath$)}")]

另外提一句:你最开始写的多个[Route]特性的写法本身是合法的,ASP.NET Core会将它们视为独立的路由规则,但如果你的需求就是要合并成单个特性,上面的正则约束方式就是最直接的解决方案啦。

内容的提问来源于stack exchange,提问作者SamaNoov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:43:16