我是Scala的新手,并尝试编写一些REST API。我使用的是Scala 11.2,Spray 1.3.1和akka 2.3.6。
我基本上是想从喷雾中编译一个例子。 我得到的每条路线的错误是: 类型不匹配; found:String(" pong !!!!!!!!")必需:spray.httpx.marshalling.ToResponseMarshallable
我不确定它是否是版本不兼容问题,或者我缺少参考。
以下是我从喷涂示例中获取的路线定义:
package com.Shenandoah.SBIR.httpInterface
import spray.routing.HttpService
trait HttpInterface extends HttpService {
def pingRoute = path("ping") {
get { complete("pong!!!!!!!!") }
}
def pongRoute = path("pong") {
get { complete("pong!?") }
}
def pipRoute = path("pip") {
get { complete("moonshine") }
}
def rootRoute = pingRoute ~ pongRoute ~ pipRoute
}
Here is the actor:
package com.Shenandoah.SBIR.httpInterface
import akka.actor._
class HttpInterfaceActor extends HttpInterface with Actor {
// the HttpService trait defines
// only one abstract member, which connects the services environment
// to the enclosing actor or test.
def actorRefFactory = context
def receive = runRoute(rootRoute)
}
答案 0 :(得分:3)
您可能正在使用Scala 2.10的依赖项"io.spray" % "spray-routing" % "2.3.6"
。有一个没有Scala版本标识的Spray版本,它是针对Scala 2.10编译的。这很不幸。
使用"io.spray" %% "spray-routing" % "2.3.6"
(注意双%
)来提取与Scala版本匹配的依赖项。这适用于Scala 2.10和2.11。
答案 1 :(得分:0)
看起来你错过了默认的marshallers。尝试添加到您的导入:
import spray.httpx.marshalling.Marshaller