我有一个包含root
和其他资源,如index.html
文件的文件夹.css
。
现在,我尝试使用下面的阿卡-HTTP路线(localhost:8080/test
)在myRoute
主办此文件夹。此外,我想在localhost:8080
举办一个hello世界页。我也喜欢以斜线的URI来重定向到非削减的URI(localhost:8080/test
应等于localhost:8080/test/
)。
不知怎的,我无法做到这一点。问候世界的页工作正常,但文件夹没有主持。我得到的是一个The requested resource could not be found.
消息(在Chrome)。
def route: Route = {
redirectToNoTrailingSlashIfPresent(StatusCodes.Found) {
(pathSingleSlash {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, homeHtml)) // "hello world"
}
}
~
pathPrefix("test") {
getFromDirectory("root") // contains the index.html
})
}
}
编辑:
当我尝试使用,而不是getFromFile(webDir + "/index.html")
(getFromDirectory(webDir)
是webDir
)的root
加载index.html
但不能访问的CSS / JS文件。
我搬到redirectToTrailingSlashIfMissing
到内部指令。这似乎是你想要做什么。请注意,webdir
是与index.html
文件夹的绝对路径
val webdir = "/Users/<your_absolute_path>/root"
val homeHtml = "homeHtml"
def route =
concat(
pathSingleSlash {
get {
complete(HttpEntity(ContentTypes.`text/html(UTF-8)`, homeHtml)) // "hello world"
}
},
(get & pathPrefix("test")) {
(pathEndOrSingleSlash & redirectToTrailingSlashIfMissing(StatusCodes.TemporaryRedirect)) {
getFromFile(s"$webdir/index.html")
} ~ {
getFromDirectory(webdir)
}
}
)