我见过它在多个地方使用,最新的包括 GitLab 的 URL 结构和我在公司开发的一些软件。
事情是这样的:
https://some.gitlab.com/group/project/-/tree/main
或对于服务的某些端点
https://some.service/-/healthcheck
我的问题是,它的目的是什么? Afaik 它没有特殊效果,除非底层 HTTP 框架以某种方式使用它?
确切、精确的原因通常是针对特定项目的。然而,字符
-
通常可以用作路由中的通配符或中性占位符。
例如,如果您的路由接受可选帐户标识符,例如:
https://some.service/:account_id/healthcheck
然后您可以使用
-
作为占位符,而无需多个路由定义(有时可能最终会使路由匹配更加复杂)。在这种情况下,您最终可能会得到如下路线:
https://some.service/-/healthcheck
https://some.service/18/healthcheck
第一种情况,没有明确提供账户。也许在某些情况下,资源 ID(在本例中为帐户 ID)可以从上下文中推断出来。
既然您明确提到了 GitLab,并且考虑到他们的代码是开源的,我就通过练习更准确地弄清楚他们使用
-
的原因。我从他们的 routes.rb
文件开始,我在其中找到了对 /-/ 范围的引用。
从那里开始,归咎于代码更改,我最终得到了以下票证:
TL;博士;他们在某些路由前面加上
-
前缀,因为当路由器需要为给定请求确定适当的控制器/操作时,它可以加快应用程序的性能。
每次 Rails 控制器必须匹配端点时,它都必须进行巨大的正则表达式比较。我已经在我们的性能跟踪中的某个地方看到了这一点。