/ / spray-json:FromRequestUnmarshallarの暗黙的な値が見つかりませんでした-json、scala、akka、spray、akka-http

spray-json:FromRequestUnmarshallarの暗黙の値が見つかりませんでした - json、scala、akka、spray、akka-http

AKKA-httpで最初のアプリケーションを作成しています。現在、spray-jsonを使用してオブジェクトをjsonに書き込んでいます。GETリクエストを作成したとき、すべてが正常に機能していますが、POSTリクエストを試したところ、次のエラーが表示されます。

Error:(55, 26) could not find implicit value for parameter um: akka.http.scaladsl.unmarshalling.FromRequestUnmarshaller[nl.quintor.model.Employee]
entity(as[Employee]) { request =>

これが私のメインクラスです。

object Main extends App with Routes {
implicit val system = ActorSystem("system")
implicit val executor: ExecutionContext = system.dispatcher
implicit val materializer: ActorMaterializer = ActorMaterializer()

override val slickboard = createSlickboard

Http().bindAndHandle(routes, httpInterface, httpPort)

private def createSlickboard: ActorRef =
system.actorOf(Slickboard.props(system), applicationName)
}
}

次の特性でルートを定義しました。

trait Routes extends CORSSupport with Protocols {
val slickboard: ActorRef

implicit val timeout = Timeout(5 seconds)

val routes =
corsHandler {
pathPrefix("employees") {
pathEnd {
get {
complete {
(slickboard ? GetAllEmployees).mapTo[HttpResponse]
}
}
}
} ~
pathPrefix("employee") {
path(IntNumber) { id =>
get {
complete {
(slickboard ? GetEmployeeById(id)).mapTo[HttpResponse]
}
} ~
post {
decodeRequest {
entity(as[Employee]) { request =>
complete {
request.toString()
}
}
}
}
}
}
}
}

スプレー推奨のようにプロトコルを定義しました。

trait Protocols extends DefaultJsonProtocol {
implicit val employeeFormat = jsonFormat8(Employee.apply)
}

私がjsonに変換しようとしているクラスは次のとおりです。

case class Employee(ID: Int, firstname: String, lastname: String, street:  String, zipCode: String, city: String, phoneNumber: String, image: String)

スタックオーバーフローで見つかった複数のソリューションを試しましたが、実際にはどれも機能していません。

誰かがこの問題で私を助けてくれませんか?

回答:

回答№1は0

私はあなたが必要だと思う

import akka.http.scaladsl.marshallers.sprayjson.SprayJsonSupport._