可以用啥字符代替 / 来分隔 URL 路径?

Posted

技术标签:

【中文标题】可以用啥字符代替 / 来分隔 URL 路径?【英文标题】:What character can be used instead of / to separate URL path?可以用什么字符代替 / 来分隔 URL 路径? 【发布时间】:2021-04-05 14:11:04 【问题描述】:

在 URL 中,根据this syntax,我想使用不同的分隔符来分隔 URL 中的路径。

例如:

在此 URL https://en.wikipedia.org/wiki/Uniform_Resource_Identifier#Generic_syntax 中,我想将 wiki/Uniform_Resource_Identifier/ 以外的符号分开,但我想确保它不会破坏由 IETF 形式化的 URL syntax .

我只关心路径,我如何分离它的组件如wikiUniform_Resource_Identifier

【问题讨论】:

为什么要使用另一个分隔符? 另外,是什么让您认为可以除了斜线之外还有另一个分隔符?第 3.3 段没有列出任何其他字符来分隔路径段 我正在尝试存储路径并且不允许/.. 那么请分享更多细节。没有人能猜出你想如何存储它,以及为什么不应该允许用于分隔路径段的通用标识符 我正在尝试使用无法使用 / 作为集合 ID 名称的 Firebase。检查这个firebase.google.com/docs/firestore/…。 【参考方案1】:

您可以使用 /%2F 的 URL 编码

https://en.wikipedia.org/wiki%2FUniform_Resource_Identifier#Generic_syntax

【讨论】:

转义字符不能达到同样的目的 这行得通,但更常见的方法是反过来:使用斜杠作为分隔符并将%2f 放在其中包含“实际”斜杠的名称中。喜欢https://en.wikipedia.org/wiki/AC%2fDC。 (***选择使用 wiki/ 之后的任何内容作为本机斜杠,只要没有页面嵌套就可以了)。【参考方案2】:

就您的应用程序对 URI 的使用而言,/ 几乎没有比任何其他字符更特别,除了两个弱例外:

使用任何定义为分隔符 (gen-delims and sub-delims in RFC3986) 的字符在用作分隔符时,您可以选择将其转义。这意味着即使您用斜线分隔组件,也可以在您的名称中包含 /,如 wiki/AC%2FDC(在您的应用程序执行拆分后有一个组件 AC/DC),但同样可以分隔您的组件带有 ; 并且仍然有 wiki;Steins%3bGate 用于 Steins;Gate。 仅当使用相对引用时,/ 的特殊之处在于您可以在斜杠上使用../../,但不能使用任何其他分隔符。 (这是路径段真正重要的唯一地方)。

真的,为你的应用选择你喜欢的;无论如何,客户端应该(至少在 HATEOAS 或真正一般的 REST 假设下)不要对组件赋予太多意义。

【讨论】:

以上是关于可以用啥字符代替 / 来分隔 URL 路径?的主要内容,如果未能解决你的问题,请参考以下文章

为啥用字符串代替不了路径

url路径中 符号是特殊字符吗

HTTP URL 路径中分隔符的最佳实践

Cocoa 路径字符串转换

python写绝对路径时可能因为路径分隔符的原因导致在不同系统上无法通用,怎么能实现通用的?

为啥要用dbus,如果不用dbus要用啥来代替?