首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >play-json -找不到参数um的隐值。

play-json -找不到参数um的隐值。
EN

Stack Overflow用户
提问于 2016-04-17 20:18:27
回答 1查看 564关注 0票数 1

我知道这个问题已经问过很多次了,但是他们都用喷雾器.我想用玩偶。这可能就是为什么提出的解决方案不能解决问题。route的特性位于一个名为RestApi.scala的单独文件中。使用它的Http.bindAndHandle位于名为Main.scala的文件中。没有删除不相关元素的两个文件如下所示。如果你想看到整个文件,请点击上面的链接。

RestApi.scala

代码语言:javascript
复制
package restApi

import akka.actor.{ActorSystem, Props}
import akka.http.scaladsl.model.StatusCodes
import akka.http.scaladsl.server.Directives._
import akka.pattern.ask
import akka.stream.ActorMaterializer
import akka.util.Timeout

import scala.concurrent.ExecutionContext
import scala.concurrent.duration._

trait RestApi {
  import models._
  import cassandraDB.{WriterActor, ReaderActor}
  implicit val system: ActorSystem
  implicit val materializer: ActorMaterializer
  implicit val ec: ExecutionContext

  implicit val timeout = Timeout(20 seconds)

  val cassandraWriterWorker = system.actorOf(Props[WriterActor], "cassandra-writer-actor")
  val cassandraReaderWorker = system.actorOf(Props[ReaderActor], "cassandra-reader-actor")

  val route =
    pathPrefix("api") {
      pathSuffix("contact") {
        // the line below has the error
        (post & entity(as[Contact])) { contact =>
          complete {
            cassandraWriterWorker ! contact
            StatusCodes.OK
          }
        }
      } ~
      pathSuffix("gps"/ "log") {
        // an analogous error message is shown in the line below
        (post & entity(as[GpsLog])) { gpsLog =>
          complete {
            cassandraWriterWorker ! gpsLog
            StatusCodes.OK
          }
        }
      }
    }
}

Main.scala

代码语言:javascript
复制
package initialization

import akka.actor.{ActorSystem, Props}
import akka.http.scaladsl.Http
import akka.stream.ActorMaterializer
import cassandraDB.{ConfigCassandraCluster, ReaderActor, WriterActor}
import gcm.GcmServer
import restApi.RestApi

object Main extends App with ConfigCassandraCluster with RestApi {

  override implicit val system = ActorSystem()
  override implicit val materializer = ActorMaterializer()
  override implicit val ec = system.dispatcher

  val write = system.actorOf(Props(new WriterActor(cluster)))
  val read = system.actorOf(Props(new ReaderActor(cluster)))
  val gcmServer = system.actorOf(Props(new GcmServer(11054...,"AIzaSyCOnVK...")), "gcm-server")
  val bindingFuture = Http().bindAndHandle(route, "localhost", 8080)


}

我指出了在RestApi.scala错误消息中错误发生的行:

代码语言:javascript
复制
Error:(31, 26) could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[models.Contact]
        (post & entity(as[Contact])) { contact =>
                         ^

Contact是在Contact.scala中定义的数据模型。

我希望这不是复制,但我真的不这么认为。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-20 20:16:30

事实证明,有一个简单的解决办法。只需将resolvers += Resolver.bintrayRepo("hseeberger", "maven")添加到构建文件中,然后将"de.heikoseeberger" %% "akka-http-play-json" % "1.5.3"添加到libraryDependencies中并将import de.heikoseeberger.akkahttpplayjson.PlayJsonSupport._导入代码中即可。现在你可以像使用喷雾一样使用play-json了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36681732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档