我刚开始使用Scala和Akka。我正在写一个小型REST服务。我正在尝试创建以下路径:
我已设法创建嵌套路径,但是只有GET用于获取集合(项目符号点中的第一个示例)才会返回结果。示例路径中带有id的GET返回The requested resource could not be found.
我尝试了许多不同的变体,但似乎没有任何效果。
以下是我的路线的摘录:
val routes = {
logRequestResult("my-service-api") {
pathPrefix("api") {
path("my-service") {
get {
pathEndOrSingleSlash {
complete("end of the story")
} ~
pathPrefix(IntNumber) { id =>
complete("Id: %d".format(id))
}
} ~
(post & pathEndOrSingleSlash & entity(as[MyResource])) { myResourceBody =>
// do something ...
}
}
}
}
}
我已经在网上检查了很多解决方案,并从Akka本身进行了一些测试,但不知怎的,我在这里遗漏了一些东西。
答案 0 :(得分:6)
我找到了解决方案。问题出在path("my-service")
部分。我已将其更改为pathPrefix("my-service")
,现在两条GET路径都正常工作。
所以正确的路线设置看起来应该是这样的。
val routes = {
logRequestResult("my-service-api") {
pathPrefix("api") {
pathPrefix("my-service") {
get {
pathEndOrSingleSlash {
complete("end of the story")
} ~
pathPrefix(IntNumber) { id =>
complete("Id: %d".format(id))
}
} ~
(post & pathEndOrSingleSlash & entity(as[MyResource])) { myResourceBody =>
// do something ...
}
}
}
}
}