Spray真的很容易,但是我在理解路由方面有问题。这就像一只狗有时会叼到骨头,但通常不会。我错过了什么?
是否有一种方法可以看到Spray尝试了哪些路线,以及为什么它放弃了某些路线?这就能解出这个。我下面的logRequest
只是显示了请求,但没有告诉我为什么路径无法匹配它。
...
(get & logRequest("SAY AAA:")) {
path("results") {
complete("results")
} ~
path("results/") { // does not work
complete("results/")
} ~
complete("fallback")
}
导致:
"results/aaa" -> fallback
"results/" -> fallback
"results" -> results
如何获取"results/"
案例?
类似问题:19556196
附录:我让它和path("results" / "")
一起工作。为什么"results/"
不工作?
好的,看来正确的做法是:
(pathPrefix("results") & pathEndOrSingleSlash) {
complete( "results[/]" )
}
这将匹配results
和results/
,这是我想要的。
背景讨论
pathEndOrSingleSlash
doc with sample