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 的区别
表格
| 特性 | StartsWithSegments | string.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 更安全、更方便,是中间件分支、多语言、版本路由的常用利器。”
浙公网安备 33010602011771号