Scala 使用akka http从src/main/resources返回一个文件
我在项目的资源文件夹src/main/resources中有一个abc.txt文件。 我有下面的代码片段,应该是为文件服务的Scala 使用akka http从src/main/resources返回一个文件,scala,akka,spray,akka-http,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 {
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初学者,使用
getFromFile
非常接近,但是它已经定义了一个HTTP方法,所以您不需要自己去做。像这样的方法应该会奏效:
val route: Route =
path("hello") {
getFromFile("src/main/resources/abc.txt")
}
你在两个不同的世界里工作。使用
calasspath
更容易获取资源
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")
}