我一直在使用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)
之类的内容?
答案 0 :(得分:1)
您需要使用Rest或RestPath。来自docs:
Rest: PathMatcher1[String]
匹配并提取剩余的完整内容 请求的URI路径中不匹配的部分作为(encoded!)字符串。如果 您需要访问路径使用的其余解码元素 改为RestPath。
RestPath: PathMatcher1[Path]
匹配和摘录 请求的URI路径中剩余的,不匹配的完整部分。