You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中Uri.Path解析/时替换为%2F的问题及解决方法咨询

关于Akka HTTP Uri.Path转义斜杠的问题解答

为什么Uri.Path./(String)会把/替换为%2F?

Akka HTTP的Uri.Path./(String)方法是用来接收单个路径段的,而非完整的多段路径结构。按照URI规范,路径段内部的/属于需要URL编码的特殊字符,会被转义为%2F,避免被误识别为路径分隔符。你传入的extractedPath是包含多个/的完整路径字符串,被该方法当作单一路径段处理,因此所有/都被自动转义。

其他处理方式

方式1:拆分路径段逐个拼接

将提取的路径按/拆分后,逐个添加到根路径中,每个部分会被当作独立的路径段:

val myPath: String = "InitialIndexValue/this/is/some/kind/of/path"
val firstIndex = myPath.indexOf('/') // 注:原代码中`indexOd`为拼写错误,正确为`indexOf`
val extractedPath = myPath.substring(firstIndex)

// 拆分路径并过滤空段(处理开头的/产生的空字符串)
val pathSegments = extractedPath.split("/").filter(_.nonEmpty)
// 从根路径开始逐个拼接段
val uriPath = pathSegments.foldLeft(Uri.Path.Root) { (currentPath, segment) =>
  currentPath / segment
}

方式2:使用Uri.Path.parse解析完整路径

直接调用Uri.Path.parse方法,它会自动识别路径中的/作为分隔符,正确解析多段路径:

val myPath: String = "InitialIndexValue/this/is/some/kind/of/path"
val firstIndex = myPath.indexOf('/')
val extractedPath = myPath.substring(firstIndex)

val uriPath = Uri.Path.parse(extractedPath)

内容的提问来源于stack exchange,提问作者Siddharth Shankar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:10:49