我目前正在使用akka-http
,并且我尝试解析包含原始uri字符串的Referer
标头。我如何从中解析查询参数
他们没有编码的情况?
这里是uri的例子:
import akka.http.scaladsl.model.Uri
Uri("https://foo.bar?b=x y").query().toMap
Uri("https://foo.bar?a=%%_1_%%").query().toMap
他们都会抛出IllegalUriException
。有一种优雅的方式吗?
答案 0 :(得分:0)
你可以尝试导入它吗
答案 1 :(得分:0)
如果你愿意引入一个单独的库,scala-uri 可以用它的 NoopDecoder
但是要小心!如果 URL 包含原始百分比编码的原始 &
,它将被解释为分隔新的查询参数
import io.lemonlabs.uri._
import io.lemonlabs.uri.config._
import io.lemonlabs.uri.decoding._
implicit val c = UriConfig(decoder = NoopDecoder)
Url.parse("https://foo.bar?b=x y").query.params
// val res4: Vector[(String, Option[String])] = Vector((b,Some(x y))
Url.parse("https://foo.bar?a=%%_1_%%").query.params
// val res3: Vector[(String, Option[String])] = Vector((a,Some(%%_1_%%)))