【问题标题】:return a file from src/main/resources using akka-http使用 akka-http 从 src/main/resources 返回一个文件
【发布时间】:2015-12-04 04:01:38
【问题描述】:

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

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")
  }
}

在这两种情况下,我都会收到错误提示

routing.Route 类型的表达式不符合预期的类型 toResponseMarshallable

我唯一的要求是,当我收到此请求时,我应该能够提供文件。 我用谷歌搜索了我找不到的解决方案。 注意:我是 Scala/Akka 初学者

【问题讨论】:

    标签: scala akka spray akka-http


    【解决方案1】:

    getFromFile 是一个指令,而complete 期望得到响应。

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

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

    【讨论】:

      【解决方案2】:

      您在这里工作于两个不同的世界。 resources 使用calasspath 更容易获得。

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

      【讨论】:

        【解决方案3】:

        getFromFile 的使用非常接近,但它已经定义了一个 HTTP 方法,所以你不需要自己做。这样的事情应该可以工作:

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

        【讨论】:

          猜你喜欢
          • 2015-02-26
          • 2015-03-22
          • 2014-04-01
          • 2020-07-24
          • 2011-02-24
          • 2014-09-04
          • 2014-09-25
          • 2015-05-07
          相关资源
          最近更新 更多