首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用模板字符串替换相对路径中的ID部件

用模板字符串替换相对路径中的ID部件
EN

Stack Overflow用户
提问于 2022-05-26 07:33:27
回答 1查看 65关注 0票数 0

我需要检查.Net核心中间件中的路由,并根据不同的路由执行不同的操作。为此,我必须对从HttpContext.Request.Path返回的以下示例路由进行路由比较。

代码语言:javascript
运行
复制
/api/employees/2d50f670c72911ec861760be36a6c36a/authorise
/api/employees/9d50f670c72911ec861760be36a6c36a/decline

由于路径中存在动态ID,我必须使用以下代码拆分并加入字符串:

代码语言:javascript
运行
复制
route = "/api/employees";        
var pathSegments = request.Path.Value.Split('/');        
if (pathSegments.Length > 3 && Guid.TryParse(pathSegments[3], out Guid employeeId))
{
   route += @"/{employeeId}/"+string.Join("/", pathSegments.Skip(4));
}

虽然这可以用于URL比较,但我想知道这是否可以像WCF中的UriTemplate类那样以更简单的方式完成呢?

EN

Stack Overflow用户

发布于 2022-05-26 11:16:49

您可以使用Segments对象的属性( property HttpContext.Url )来代替您编写的试图对url进行分区的前两行。它为您提供了一个包含所有段的字符串数组。

但是,我想你的逻辑是错误的。为什么不直接在实际的Action中执行所需的操作呢?

我指的是你提到的比较Action(Controller Method)的urls,对吗?如果是这样的话,为什么不直接在其中执行您想要的操作呢?

例如,如果/api/employees/2d50f670c72911ec861760be36a6c36a/authorise请求必须在被请求的操作之前执行一个逻辑(并且这个逻辑是针对每个请求执行的),那么我们为什么要在一个middleware中这样做呢?

因为据我所知,middlewares被用于横切关注点。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72388314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档