context.Request.Path.StartsWithSegments

context.Request.Path.StartsWithSegments 是 ASP.NET Core 中对**请求路径(Path)**做“前缀匹配”的官方 API,
一句话:
“判断当前 URL 路径是否以指定段(segment)开头,返回 bool,可带出站值拿到剩余部分。”

1. 方法签名

csharp
复制
bool StartsWithSegments(string path, out PathString remaining);
bool StartsWithSegments(PathString other, StringComparison comparison);
// 更多重载...
 

2. 常见用途

表格
复制
场景示例
中间件分支 if (context.Request.Path.StartsWithSegments("/api"))
多语言前缀 if (path.StartsWithSegments("/en", out var rest))
静态文件映射 MapWhen(ctx => ctx.Request.Path.StartsWithSegments("/docs"), ...)

3. 代码示例

csharp
复制
var path = context.Request.Path; // 例如 /api/v2/products

if (path.StartsWithSegments("/api", out var remaining))
{
    // remaining = /v2/products
    _logger.LogInformation("API 前缀匹配成功,剩余路径:{0}", remaining);
}
 

4. 与 String.StartsWith 的区别

表格
复制
特性StartsWithSegmentsstring.StartsWith
段级匹配 ✅ 按 / 分割 ❌ 字符级
自动忽略尾部 /
可取出剩余段 ✅(out 参数) ❌ 需手动 SubString
大小写 默认 OrdinalIgnoreCase 需自己指定

5. 重载 & 选项

csharp
复制
// 大小写敏感
path.StartsWithSegments("/API", StringComparison.Ordinal);

// 带剩余段 + 大小写
path.StartsWithSegments("/api", out var rest, StringComparison.OrdinalIgnoreCase);
 

✅ 一句话总结

context.Request.Path.StartsWithSegments 就是:
“按段(/xxx)匹配 URL 前缀,返回 bool 并可一次性拿到剩余路径,比字符串 StartsWith 更安全、更方便,是中间件分支、多语言、版本路由的常用利器。”
posted @ 2025-10-10 17:52  yinghualeihenmei  阅读(12)  评论(0)    收藏  举报