return 来自 src/main/resources 使用 akka-http 的文件

return a file from src/main/resources using akka-http

我的项目资源文件夹 src/main/resources 中有一个文件 abc.txt。 我有以下应该为文件提供服务的代码片段。

get {
    path("hello") {
      complete {
        val s = Source.file(new File("src/main/resources/abc.txt"), 1024)
        s
      }
    }

我什至尝试了以下方法

get {
path("hello") {
  complete {
    getFromFile("src/main/resources/abc.txt")
  }
}

在这两种情况下我都收到一条错误消息

Expression of type routing.Route doesn't conform to expected Type toResponseMarshallable

我唯一的要求是,当我收到此请求时,我应该能够提供文件。 我做了 google 的解决方案,但我找不到任何解决方案。 注意:我是 Scala/Akka 初学者

getFromFile的用法很接近,但是已经定义了一个HTTP方法,所以你不需要自己动手。这样的事情应该有效:

val route: Route =
  path("hello") {
    getFromFile("src/main/resources/abc.txt")
  }

你在这里工作在两个不同的世界。使用 calasspath.

更容易获得 resources
    val resourceStream: InputStream = getClass.getResourceAsStream("/"src/main/resources/abc.txt")
    val data: String = scala.io.Source.fromInputStream(resourceStream).getLine.mkString
    data

getFromFile 是指令,而 complete 需要响应。

正确的解决方案应该是这样的:

val route: Route =
  path("hello") {
    getFromResource("abc.txt")
  }