我正在使用Http Akka和Scala。 我有这条路线:
?- head(3).
[ (one,50,40), (two,80,70), (three,100,55), (four,50,45), (five,50,40), (six,80,70), (seven,100,55), (eight,50,45)]
------ 1 ---------
false.
出于某种原因,它没有使用此错误进行编译:
object Route {
val route =
path("items" / "card" / """\w+""".r) {
get {
complete {
EntitiesData.someEntity
}
}
}
}
当我删除正则表达式部分或将其更改为常规字符串时,似乎工作正常。
答案 0 :(得分:3)
您需要将代码修改为:
object Route {
val route =
path("items" / "card" / """\w+""".r) { matched =>
get {
complete {
EntitiesData.someEntity
}
}
}
}
来自Akka PathMatcher DSL文档:
您可以将Regex实例用作匹配的PathMatcher1 [String] 无论正则表达式匹配并提取一个String值。一个 从正则表达式创建的PathMatcher提取 完全匹配(如果正则表达式不包含捕获组)或 捕获组(如果正则表达式只包含一个捕获组)。如果 正则表达式包含多个捕获组 将抛出IllegalArgumentException。
因此,当您在路径指令中使用正则表达式时,它会将匹配的部分传递到该指令下的部分。这就是您的代码中缺少的内容。