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._