6

スプレー ルーティングの完全なディレクティブからリストを返そうとしています。

complete {
  List("hello")
}

ただし、エラーが発生します-

Expression of type List[String] doesn't conform to expected type ToResponseMarshallable

Seq で同じエラーが発生しています。私は、List と Seq のマーシャラーが、spray-httpx のドキュメントでデフォルトで提供されていないことを確認しました。ただし、spray-json はその DefaultJsonProtocol でマーシャリング サポートを提供します。私は自分のコードにspray.httpx.SprayJsonSupport._とspray.json.DefaultJsonProtocol._をインポートしましたが、それも役に立ちませんでした。

スプレー json を使用して List/Seq をマーシャリングするにはどうすればよいですか? または、独自の Marshaller を作成する必要がありますか?

(私のscalaバージョンは2.11.4です)

4

3 に答える 3

5

spray1.3.2 と1.3.2を使用spray-jsonすると、可能になるはずです。

インポートすることを確認してください(インポートすると言いますが、再確認してください)。

import spray.httpx.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._

次の例を検討してください。

import akka.actor.{ActorSystem, Props, Actor}
import akka.io.IO
import spray.can.Http
import spray.routing.HttpService
import akka.pattern.ask
import akka.util.Timeout
import scala.concurrent.duration._
import spray.httpx.SprayJsonSupport._
import spray.json.DefaultJsonProtocol._

object Boot extends App {
  implicit val system = ActorSystem("so")

  val testActor = system.actorOf(Props[TestActor])

  implicit val timeout = Timeout(5.seconds)
  IO(Http) ? Http.Bind(testActor, interface = "0.0.0.0", port = 5000)

}

class TestActor extends Actor with HttpService {

  def receive  = runRoute(route)

  def actorRefFactory = context

  val route = get{
    path("ping") {
      complete(List("OK"))
    }
  }

}

問題ないように見える/ping返品をリクエストしています。["OK"]

以下、参考までにbuild.sbt

build.sbt

val akkaVersion = "2.3.5"

val sprayVersion = "1.3.2"

resolvers += "spray" at "http://repo.spray.io/"

scalaVersion := "2.11.5"

scalacOptions := Seq("-feature", "-unchecked", "-deprecation", "-encoding", "utf8")

libraryDependencies ++= Seq(
  "com.typesafe.akka"   %% "akka-actor"       % akkaVersion,
  "io.spray"            %% "spray-can"        % sprayVersion,
  "io.spray"            %% "spray-routing"    % sprayVersion,
  "io.spray"            %% "spray-client"     % sprayVersion,
  "io.spray"            %% "spray-json"       % "1.3.1"
)
于 2015-02-19T11:40:27.567 に答える