喷雾路径匹配其余的字符串

时间:2014-08-14 17:58:01

标签: spray

我一直在使用Spray一段时间,我正在尝试匹配一个看起来像这样的URI:

http GET http://127.0.0.1:8080/sec/company/file/txt/2012QTR1/0000018255-12-000005_finalDoc.html

我写的DSL是这样的:

pathPrefix("sec") {
  //...some other routes
  pathPrefix("company") {
     pathPrefix("file") {
        path("txt" / Segment) { fileName =>
          get {
            complete(fileName)
          }
        } ~
        path("html" / Segment) { fileName =>
          get {
            complete(fileName)
          }
        } ~ complete(NotFound)
  } 
}

我正在尝试匹配2012QTR1/0000018255-12-000005_finalDoc.html,然后可以将其转换为所请求文件的实际路径。

我注意到("txt" / Segment)只能匹配一个段的URI,而不是整个字符串,但是如何匹配文本的其余部分而不必编写("txt" / Segment / Segment / Segment)之类的内容?

1 个答案:

答案 0 :(得分:1)

您需要使用Rest或RestPath。来自docs

  

Rest: PathMatcher1[String]匹配并提取剩余的完整内容   请求的URI路径中不匹配的部分作为(encoded!)字符串。如果   您需要访问路径使用的其余解码元素   改为RestPath。

     

RestPath: PathMatcher1[Path]匹配和摘录   请求的URI路径中剩余的,不匹配的完整部分。