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
相关产品推荐
相关产品推荐

