如何在喷涂路由中捕获斜杠结束的URL?

时间:2014-08-14 07:03:32

标签: spray

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/"不起作用?

1 个答案:

答案 0 :(得分:5)

好的,似乎正确的方法是:

    (pathPrefix("results") & pathEndOrSingleSlash) {
      complete( "results[/]" )
    }

这将匹配我想要的resultsresults/

Discussion on the background

pathEndOrSingleSlash doc with sample