Scala 如何匹配Akka HTTP中的所有路径
大多数Akka HTTP示例表明,使用Scala 如何匹配Akka HTTP中的所有路径,scala,akka-http,Scala,Akka Http,大多数Akka HTTP示例表明,使用path定义路由非常容易 我从 val路由= 路径(“你好”){ 完整的( HttpEntity( ContentTypes.`text/html(UTF-8)`, “向akka问好(http”)) } 但是,以上仅适用于“/hello”,我希望匹配所有可能的路径或URL,而不仅仅是“hello”。空字符串“””仅与根路径匹配,“*”与文本路径“/*”匹配。路径的参数是必需的,不能简单地忽略。有很多方法可以实现这一点。我相信下面展示了一些排序方式,从最优先
path
定义路由非常容易
我从
val路由=
路径(“你好”){
完整的(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
“向akka问好(http”))
}
但是,以上仅适用于“/hello”,我希望匹配所有可能的路径或URL,而不仅仅是“hello”。空字符串“”
”仅与根路径匹配,“*”
与文本路径“/*”匹配。路径
的参数是必需的,不能简单地忽略。有很多方法可以实现这一点。我相信下面展示了一些排序方式,从最优先到最不优先
使用其他类型的指令
最简单的解决方案需要知道路由可以是任意的,而不仅仅是。
因此,只需完全删除路径
,即可修改原始示例以获得所需结果:
val route =
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
也可以使用正则表达式:
val route =
path(".*".r) { _ =>
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}
val route =
path(Remaining) { _ =>
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}
val route =
path(".*".r) { _ =>
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}
val route =
pathPrefix("") {
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}