3

プロジェクトのリソース フォルダー 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")
  }
}

どちらの場合も、次のエラーが表示されます

タイプ routing.Route の式が、予期されるタイプ toResponseMarshallable に準拠していません

私の唯一の要件は、このリクエストを受け取ったときにファイルを提供できることです。解決策をグーグルで検索しましたが、何も見つかりませんでした。注: 私は Scala/Akka の初心者です

4

3 に答える 3

4

getFromFileはディレクティブですがcomplete、応答が必要です。

正しい解決策は次のようになります。

val route: Route =
  path("hello") {
    getFromResource("abc.txt")
  }
于 2015-12-05T18:58:46.290 に答える
1

あなたはここで 2 つの異なる世界で働いています。を使用resourcesすると簡単に入手できcalasspathます。

    val resourceStream: InputStream = getClass.getResourceAsStream("/"src/main/resources/abc.txt")
    val data: String = scala.io.Source.fromInputStream(resourceStream).getLine.mkString
    data
于 2015-12-04T14:15:24.680 に答える
0

の使用getFromFileは非常に近いものでしたが、既に HTTP メソッドが定義されているため、自分で行う必要はありません。このようなものが動作するはずです:

val route: Route =
  path("hello") {
    getFromFile("src/main/resources/abc.txt")
  }
于 2015-12-04T14:12:44.513 に答える