使用akka-http从src / main / resources返回一个文件

时间:2015-12-04 04:01:38

标签: scala akka spray 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")
  }
}

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

  

路由类型的表达。路由不符合预期的类型toResponseMarshallable

我唯一的要求是,当我收到此请求时,我应该能够提供文件。 我确实谷歌寻求解决方案我无法找到任何解决方案。 注意:我是Scala / Akka初学者

3 个答案:

答案 0 :(得分:4)

super(context, itemResource, (T[]) objects); 是指令,而getFromFile则需要回复。

正确的解决方案应该是:

complete

答案 1 :(得分:0)

getFromFile的使用非常接近,但它已经定义了一种HTTP方法,因此您不需要自己动手。这样的事情应该有效:

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

答案 2 :(得分:0)

你在这里工作两个不同的世界。使用resources可以更轻松地获取calasspath

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