作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大多数Akka HTTP示例都表明,使用Routes
定义path
确实很容易。
我从introductory example得到以下内容(略有简化),
val route =
path("hello") {
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}
""
仅与根路径匹配,而
"*"
与文字路径“/*”匹配。
path
的参数是必需的,不能简单地省略。
最佳答案
有很多方法可以实现。我相信以下内容显示了一些顺序,从最高优先到最低优先。
使用其他类型的指令
最简单的解决方案需要知道Route可以是任何Directive,而不仅仅是path directives。
因此,仅通过完全删除path
,就可以对原始示例进行修改以获得所需的结果:
val route =
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
PathMatcher
与
path
一起使用
path
实际上并不将
String
作为参数。隐式转换后,
path("hello")
实际上是
pathPrefix(_segmentStringToPathMatcher("hello"))
。使用
PathMatcher
类型的不同参数可以达到预期的结果。
Remaining
匹配剩下的所有内容。
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>"))
}
pathPrefix("")
而不是
path("")
path
空字符串
""
,它的行为有点像通配符,因为它始终与字符串匹配。但是,
path
需要完全匹配(整个字符串由匹配使用),但是空字符串仅完全消耗空字符串。由于
pathPrefix
只需要匹配字符串的开头,而不消耗整个字符串,因此可以进行以下工作:
val route =
pathPrefix("") {
complete(
HttpEntity(
ContentTypes.`text/html(UTF-8)`,
"<h1>Say hello to akka-http</h1>"))
}
关于scala - 如何在Akka HTTP中匹配所有路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41627005/
我是一名优秀的程序员,十分优秀!