gpt4 book ai didi

scala - Akka-Http 加载 css&js 资源

转载 作者:行者123 更新时间:2023-12-04 17:44:21 25 4
gpt4 key购买 nike

我想使用 akka-http 之类的 http 服务器(例如 tomcat 或 nginx 服务器)。
使用这个简单的代码可以从 Web 浏览器加载 html 源,但不能加载链接到 html 文件的其他源。

import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.server.Directives._
import akka.stream.ActorMaterializer

import scala.io.StdIn

object MainRunner extends App {

implicit val system = ActorSystem("mySystem")
implicit val materializer = ActorMaterializer()
implicit val ec = system.dispatcher

val staticResources =
get {
path("admin") {
getFromResource("admin/index.html")
} ~ pathPrefix("admin") {
getFromResourceDirectory("admin")
}
}

val bindingFuture = Http().bindAndHandle(staticResources, "localhost", 8080)

println(s"Server online at http://localhost:8080/\nPress RETURN to stop...")
StdIn.readLine() // let it run until user presses return
bindingFuture
.flatMap(_.unbind()) // trigger unbinding from the port
.onComplete(_ => system.terminate()) // and shutdown when done
}

这是我的 html 文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<h1>Admin area</h1>
</body>
</html>

并在浏览器中收到此错误:
enter image description here
这是目录结构:
enter image description here

如何解决这个问题?

最佳答案

在访问静态资源路径时,您将需要您的路由添加尾部斜杠。 redirectToTrailingSlashIfMissing指令应该可以解决问题:

import akka.http.scaladsl.model.StatusCodes

val staticResources =
(get & pathPrefix("admin")){
(pathEndOrSingleSlash & redirectToTrailingSlashIfMissing(StatusCodes.TemporaryRedirect)) {
getFromResource("admin/index.html")
} ~ {
getFromResourceDirectory("admin")
}
}

关于scala - Akka-Http 加载 css&js 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41179581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com