Spray.io Path Directives服务于index.html

时间:2015-04-17 02:45:03

标签: scala spray

我想设置一个Spray路由来从目录中提供Web内容。

例如,以下网址应解析为同一文件。

http://mywebsite.com/path/to/thing

http://mywebsite.com/path/to/thing/

http://mywebsite.com/path/to/thing/index.html

应该从./web/path/to/thing/index.html

文件系统提供index.html文件

如果明确指定了“index.html”,则以下路由有效。

pathPrefix("") {
  getFromDirectory("./web/")
}

我如何在喷涂路线中表示这一点?

1 个答案:

答案 0 :(得分:3)

假设您已经与pathPrefix匹配“事物”,我认为您需要pathEndOrSingleSlash,描述为here。我不认为Spray-routing会与隐含的“index.html”相匹配,但无论如何,如果你需要,你可以轻松地编写指令:

(pathEndOrSingleSlash | path("index.html")) { ... }

更新:

好的,从你的评论我想你只想采取指定的路径并从该目录提供文件。这样的事情(未经测试)?

path(Segment) { rawPath =>
  getFromFile("web/" + if (rawPath endsWith "/") rawPath + "index.html" else rawPath)
}